1. 19 Jan, 2006 3 commits
    • Bruce Momjian's avatar
      99e0c542
    • Tom Lane's avatar
      It turns out that TablespaceCreateDbspace fails badly if a relcache flush · 4513d9de
      Tom Lane authored
      occurs when it tries to heap_open pg_tablespace.  When control returns to
      smgrcreate, that routine will be holding a dangling pointer to a closed
      SMgrRelation, resulting in mayhem.  This is of course a consequence of
      the violation of proper module layering inherent in having smgr.c call
      a tablespace command routine, but the simplest fix seems to be to change
      the locking mechanism.  There's no real need for TablespaceCreateDbspace
      to touch pg_tablespace at all --- it's only opening it as a way of locking
      against a parallel DROP TABLESPACE command.  A much better answer is to
      create a special-purpose LWLock to interlock these two operations.
      This drops TablespaceCreateDbspace quite a few layers down the food chain
      and makes it something reasonably safe for smgr to call.
      4513d9de
    • Tom Lane's avatar
      Fix a tiny memory leak (one List header) in RelationCacheInvalidate(). · b0be247e
      Tom Lane authored
      This is utterly insignificant in normal operation, but it becomes a
      problem during cache inval stress testing.  The original coding in fact
      had no leak --- the 8.0 List rewrite created the issue.  I wonder whether
      list_concat should pfree the discarded header?
      b0be247e
  2. 18 Jan, 2006 5 commits
    • Bruce Momjian's avatar
      7259cc1e
    • Bruce Momjian's avatar
      You'll find attached a patch for a fixed explanation on parameter_mode · ccebb674
      Bruce Momjian authored
      column, OUT and INOUT added.
      
      Guillaume LELARGE
      ccebb674
    • Tom Lane's avatar
      Modify pgstats code to reduce performance penalties from oversized stats data · d5db3abf
      Tom Lane authored
      files: avoid creating stats hashtable entries for tables that aren't being
      touched except by vacuum/analyze, ensure that entries for dropped tables are
      removed promptly, and tweak the data layout to avoid storing useless struct
      padding.  Also improve the performance of pgstat_vacuum_tabstat(), and make
      sure that autovacuum invokes it exactly once per autovac cycle rather than
      multiple times or not at all.  This should cure recent complaints about 8.1
      showing much higher stats I/O volume than was seen in 8.0.  It'd still be a
      good idea to revisit the design with an eye to not re-writing the entire
      stats dataset every half second ... but that would be too much to backpatch,
      I fear.
      d5db3abf
    • Bruce Momjian's avatar
      Done: · e1af35af
      Bruce Momjian authored
      > 	o -Allow pooled connections to list all open WITH HOLD cursors
      e1af35af
    • Neil Conway's avatar
      Add a new system view, pg_cursors, that displays the currently available · 33e06ebc
      Neil Conway authored
      cursors. Patch from Joachim Wieland, review and ediorialization by Neil
      Conway. The view lists cursors defined by DECLARE CURSOR, using SPI, or
      via the Bind message of the frontend/backend protocol. This means the
      view does not list the unnamed portal or the portal created to implement
      EXECUTE. Because we do list SPI portals, there might be more rows in
      this view than you might expect if you are using SPI implicitly (e.g.
      via a procedural language).
      
      Per recent discussion on -hackers, the query string included in the
      view for cursors defined by DECLARE CURSOR is based on
      debug_query_string. That means it is not accurate if multiple queries
      separated by semicolons are submitted as one query string. However,
      there doesn't seem a trivial fix for that: debug_query_string
      is better than nothing. I also changed SPI_cursor_open() to include
      the source text for the portal it creates: AFAICS there is no reason
      not to do this.
      
      Update the documentation and regression tests, bump the catversion.
      33e06ebc
  3. 17 Jan, 2006 3 commits
  4. 16 Jan, 2006 4 commits
  5. 15 Jan, 2006 3 commits
  6. 14 Jan, 2006 3 commits
  7. 13 Jan, 2006 3 commits
    • Tom Lane's avatar
      Remove logic in XactLockTableWait() that attempted to mark a crashed · 39fc1fb0
      Tom Lane authored
      transaction as aborted.  Since we only call XactLockTableWait on XIDs
      that we believe to be currently running, the odds of this code ever
      actually firing are minimal.  It's certainly unnecessary, since a
      transaction that's not either running or committed will be presumed
      aborted anyway.  What's more, it's not hard to imagine scenarios where
      this could result in corrupting pg_clog: for instance, if a bogus XID
      somehow got passed to XactLockTableWait.  I think the code probably
      dates from the ancient era when we didn't have TransactionIdIsInProgress;
      back then it may have been necessary, but now I think it's a waste of
      cycles and potentially dangerous.  Per discussion with Qingqing Zhou
      and Karsten Hilbert.
      39fc1fb0
    • Tom Lane's avatar
      Document that CREATE OPERATOR CLASS amounts to granting public execute · 7d6d02b6
      Tom Lane authored
      permissions on the functions and operators contained in the opclass.
      Since we already require superuser privilege to create an operator class,
      there's no expansion-of-privilege hazard here, but if someone were to get
      the idea of building an opclass containing functions that need security
      restrictions, we'd better warn them off.  Also, change the permission
      checks from have-execute-privilege to have-ownership, and then comment
      them all out since they're dead code anyway under the superuser restriction.
      7d6d02b6
    • Tom Lane's avatar
      Require the issuer of CREATE TYPE to own the functions mentioned in the · 1564e92c
      Tom Lane authored
      type definition.  Because use of a type's I/O conversion functions isn't
      access-checked, CREATE TYPE amounts to granting public execute permissions
      on the functions, and so allowing it to anybody means that someone could
      theoretically gain access to a function he's not supposed to be able to
      execute.  The parameter-type restrictions already enforced by CREATE TYPE
      make it fairly unlikely that this oversight is meaningful in practice,
      but still it seems like a good idea to plug the hole going forward.
      Also, document the implicit grant just in case anybody gets the idea of
      building I/O functions that might need security restrictions.
      1564e92c
  8. 12 Jan, 2006 6 commits
  9. 11 Jan, 2006 7 commits
  10. 10 Jan, 2006 3 commits