1. 16 Sep, 2004 1 commit
    • Tom Lane's avatar
      Restructure subtransaction handling to reduce resource consumption, · 8f9f1986
      Tom Lane authored
      as per recent discussions.  Invent SubTransactionIds that are managed like
      CommandIds (ie, counter is reset at start of each top transaction), and
      use these instead of TransactionIds to keep track of subtransaction status
      in those modules that need it.  This means that a subtransaction does not
      need an XID unless it actually inserts/modifies rows in the database.
      Accordingly, don't assign it an XID nor take a lock on the XID until it
      tries to do that.  This saves a lot of overhead for subtransactions that
      are only used for error recovery (eg plpgsql exceptions).  Also, arrange
      to release a subtransaction's XID lock as soon as the subtransaction
      exits, in both the commit and abort cases.  This avoids holding many
      unique locks after a long series of subtransactions.  The price is some
      additional overhead in XactLockTableWait, but that seems acceptable.
      Finally, restructure the state machine in xact.c to have a more orthogonal
      set of states for subtransactions.
      8f9f1986
  2. 29 Aug, 2004 1 commit
  3. 01 Jul, 2004 1 commit
  4. 21 Mar, 2004 1 commit
  5. 29 Nov, 2003 1 commit
    • PostgreSQL Daemon's avatar
      · 55b11325
      PostgreSQL Daemon authored
      make sure the $Id tags are converted to $PostgreSQL as well ...
      55b11325
  6. 04 Aug, 2003 2 commits
  7. 02 May, 2003 1 commit
    • Tom Lane's avatar
      Portal and memory management infrastructure for extended query protocol. · de28dc9a
      Tom Lane authored
      Both plannable queries and utility commands are now always executed
      within Portals, which have been revamped so that they can handle the
      load (they used to be good only for single SELECT queries).  Restructure
      code to push command-completion-tag selection logic out of postgres.c,
      so that it won't have to be duplicated between simple and extended queries.
      initdb forced due to addition of a field to Query nodes.
      de28dc9a
  8. 14 Oct, 2002 1 commit
  9. 21 May, 2002 1 commit
    • Tom Lane's avatar
      Remove global variable scanCommandId in favor of storing a command ID · 959e61e9
      Tom Lane authored
      in snapshots, per my proposal of a few days ago.  Also, tweak heapam.c
      routines (heap_insert, heap_update, heap_delete, heap_mark4update) to
      be passed the command ID to use, instead of doing GetCurrentCommandID.
      For catalog updates they'll still get passed current command ID, but
      for updates generated from the main executor they'll get passed the
      command ID saved in the snapshot the query is using.  This should fix
      some corner cases associated with functions and triggers that advance
      current command ID while an outer query is still in progress.
      959e61e9
  10. 05 Nov, 2001 1 commit
  11. 28 Oct, 2001 1 commit
  12. 25 Oct, 2001 1 commit
  13. 21 May, 2001 1 commit
    • Jan Wieck's avatar
      Enhancement of SPI to get access to portals · d27f363e
      Jan Wieck authored
      - New functions to create a portal using a prepared/saved
        SPI plan or lookup an existing portal by name.
      - Functions to fetch/move from/in portals. Results are placed
        in the usual SPI_processed and SPI_tuptable, so the entire
        set of utility functions can be used to gain attribute access.
      - Prepared/saved SPI plans now use their own memory context
        and SPI_freeplan(plan) can remove them.
      - Tuple result sets (SPI_tuptable) now uses it's own memory
        context and can be free'd by SPI_freetuptable(tuptab).
      
      Enhancement of PL/pgSQL
      
      - Uses generic named portals internally in FOR ... SELECT
        loops to avoid running out of memory on huge result sets.
      - Support for CURSOR and REFCURSOR syntax using the new SPI
        functionality. Cursors used internally only need no explicit
        transaction block. Refcursor variables can be used inside
        of explicit transaction block to pass cursors between main
        application and functions.
      
      
      Jan
      d27f363e
  14. 28 Jun, 2000 1 commit
    • Tom Lane's avatar
      First phase of memory management rewrite (see backend/utils/mmgr/README · 1aebc361
      Tom Lane authored
      for details).  It doesn't really do that much yet, since there are no
      short-term memory contexts in the executor, but the infrastructure is
      in place and long-term contexts are handled reasonably.  A few long-
      standing bugs have been fixed, such as 'VACUUM; anything' in a single
      query string crashing.  Also, out-of-memory is now considered a
      recoverable ERROR, not FATAL.
      Eliminate a large amount of crufty, now-dead code in and around
      memory management.
      Fix problem with holding off SIGTRAP, SIGSEGV, etc in postmaster and
      backend startup.
      1aebc361
  15. 15 Jul, 1999 1 commit
  16. 14 Jul, 1999 1 commit
  17. 25 May, 1999 1 commit
  18. 13 May, 1999 1 commit
    • Tom Lane's avatar
      Rip out QueryTreeList structure, root and branch. Querytree · 507a0a2a
      Tom Lane authored
      lists are now plain old garden-variety Lists, allocated with palloc,
      rather than specialized expansible-array data allocated with malloc.
      This substantially simplifies their handling and eliminates several
      sources of memory leakage.
      Several basic types of erroneous queries (syntax error, attempt to
      insert a duplicate key into a unique index) now demonstrably leak
      zero bytes per query.
      507a0a2a
  19. 13 Feb, 1999 1 commit
  20. 27 Jan, 1999 1 commit