Skip to content
Snippets Groups Projects
  1. Nov 15, 2007
  2. Sep 05, 2007
    • Tom Lane's avatar
      Implement lazy XID allocation: transactions that do not modify any database · 295e6398
      Tom Lane authored
      rows will normally never obtain an XID at all.  We already did things this way
      for subtransactions, but this patch extends the concept to top-level
      transactions.  In applications where there are lots of short read-only
      transactions, this should improve performance noticeably; not so much from
      removal of the actual XID-assignments, as from reduction of overhead that's
      driven by the rate of XID consumption.  We add a concept of a "virtual
      transaction ID" so that active transactions can be uniquely identified even
      if they don't have a regular XID.  This is a much lighter-weight concept:
      uniqueness of VXIDs is only guaranteed over the short term, and no on-disk
      record is made about them.
      
      Florian Pflug, with some editorialization by Tom.
      295e6398
  3. Jan 05, 2007
  4. Oct 04, 2006
  5. Sep 23, 2006
  6. Sep 19, 2006
    • Tom Lane's avatar
      Add built-in userlock manipulation functions to replace the former · 9b4cda0d
      Tom Lane authored
      contrib functionality.  Along the way, remove the USER_LOCKS configuration
      symbol, since it no longer makes any sense to try to compile that out.
      No user documentation yet ... mmoncure has promised to write some.
      Thanks to Abhijit Menon-Sen for creating a first draft to work from.
      9b4cda0d
  7. Jul 24, 2006
  8. Jul 14, 2006
  9. Mar 05, 2006
  10. Dec 09, 2005
    • Tom Lane's avatar
      Simplify lock manager data structures by making a clear separation between · c599a247
      Tom Lane authored
      the data defining the semantics of a lock method (ie, conflict resolution
      table and ancillary data, which is all constant) and the hash tables
      storing the current state.  The only thing we give up by this is the
      ability to use separate hashtables for different lock methods, but there
      is no need for that anyway.  Put some extra fields into the LockMethod
      definition structs to clean up some other uglinesses, like hard-wired
      tests for DEFAULT_LOCKMETHOD and USER_LOCKMETHOD.  This commit doesn't
      do anything about the performance issues we were discussing, but it clears
      away some of the underbrush that's in the way of fixing that.
      c599a247
  11. Oct 15, 2005
  12. Jun 18, 2005
    • Tom Lane's avatar
      Add a time-of-preparation column to the pg_prepared_xacts view, per an · a8d1075f
      Tom Lane authored
      old suggestion by Oliver Jowett.  Also, add a transaction column to the
      pg_locks view to show the xid of each transaction holding or awaiting
      locks; this allows prepared transactions to be properly associated with
      the locks they own.  There was already a column named 'transaction',
      and I chose to rename it to 'transactionid' --- since this column is
      new in the current devel cycle there should be no backwards compatibility
      issue to worry about.
      a8d1075f
  13. May 17, 2005
  14. Apr 30, 2005
    • Tom Lane's avatar
      Restructure LOCKTAG as per discussions of a couple months ago. · 3a694bb0
      Tom Lane authored
      Essentially, we shoehorn in a lockable-object-type field by taking
      a byte away from the lockmethodid, which can surely fit in one byte
      instead of two.  This allows less artificial definitions of all the
      other fields of LOCKTAG; we can get rid of the special pg_xactlock
      pseudo-relation, and also support locks on individual tuples and
      general database objects (including shared objects).  None of those
      possibilities are actually exploited just yet, however.
      
      I removed pg_xactlock from pg_class, but did not force initdb for
      that change.  At this point, relkind 's' (SPECIAL) is unused and
      could be removed entirely.
      3a694bb0
  15. Jan 01, 2005
  16. Aug 29, 2004
  17. Aug 27, 2004
    • Tom Lane's avatar
      Introduce local hash table for lock state, as per recent proposal. · 1785aceb
      Tom Lane authored
      PROCLOCK structs in shared memory now have only a bitmask for held
      locks, rather than counts (making them 40 bytes smaller, which is a
      good thing).  Multiple locks within a transaction are counted in the
      local hash table instead, and we have provision for tracking which
      ResourceOwner each count belongs to.  Solves recently reported problem
      with memory leakage within long transactions.
      1785aceb
  18. Apr 01, 2004
    • Tom Lane's avatar
      Replace TupleTableSlot convention for whole-row variables and function · 375369ac
      Tom Lane authored
      results with tuples as ordinary varlena Datums.  This commit does not
      in itself do much for us, except eliminate the horrid memory leak
      associated with evaluation of whole-row variables.  However, it lays the
      groundwork for allowing composite types as table columns, and perhaps
      some other useful features as well.  Per my proposal of a few days ago.
      375369ac
  19. Nov 29, 2003
    • PostgreSQL Daemon's avatar
      · 969685ad
      PostgreSQL Daemon authored
      $Header: -> $PostgreSQL Changes ...
      969685ad
  20. Aug 05, 2003
  21. Feb 20, 2003
  22. Feb 19, 2003
    • Bruce Momjian's avatar
      - Modifies LOCKTAG to include a 'classId'. Relation receive a classId of · d0f3a7e9
      Bruce Momjian authored
      RelOid_pg_class, and transaction locks XactLockTableId. RelId is renamed
      to objId.
      
      - LockObject() and UnlockObject() functions created, and their use
      sprinkled throughout the code to do descent locking for domains and
      types. They accept lock modes AccessShare and AccessExclusive, as we
      only really need a 'read' and 'write' lock at the moment.  Most locking
      cases are held until the end of the transaction.
      
      This fixes the cases Tom mentioned earlier in regards to locking with
      Domains.  If the patch is good, I'll work on cleaning up issues with
      other database objects that have this problem (most of them).
      
      Rod Taylor
      d0f3a7e9
  23. Feb 18, 2003
  24. Sep 04, 2002
  25. Sep 02, 2002
    • Tom Lane's avatar
      Code review for HeapTupleHeader changes. Add version number to page headers · c7a165ad
      Tom Lane authored
      (overlaying low byte of page size) and add HEAP_HASOID bit to t_infomask,
      per earlier discussion.  Simplify scheme for overlaying fields in tuple
      header (no need for cmax to live in more than one place).  Don't try to
      clear infomask status bits in tqual.c --- not safe to do it there.  Don't
      try to force output table of a SELECT INTO to have OIDs, either.  Get rid
      of unnecessarily complex three-state scheme for TupleDesc.tdhasoids, which
      has already caused one recent failure.  Improve documentation.
      c7a165ad
  26. Aug 31, 2002
    • Tom Lane's avatar
      Code review for pg_locks feature. Make shmemoffset of PROCLOCK structs · 1bab464e
      Tom Lane authored
      available (else there's no way to interpret the list links).  Change
      pg_locks view to show transaction ID locks separately from ordinary
      relation locks.  Avoid showing N duplicate rows when the same lock is
      held multiple times (seems unlikely that users care about exact hold
      count).  Improve documentation.
      1bab464e
  27. Aug 29, 2002
  28. Aug 27, 2002
  29. Aug 17, 2002
Loading