1. 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
  2. 20 May, 2001 2 commits
    • Tom Lane's avatar
      Modify optimizer data structures so that IndexOptInfo lists built for · be03eb25
      Tom Lane authored
      create_index_paths are not immediately discarded, but are available for
      subsequent planner work.  This allows avoiding redundant syscache lookups
      in several places.  Change interface to operator selectivity estimation
      procedures to allow faster and more flexible estimation.
      Initdb forced due to change of pg_proc entries for selectivity functions!
      be03eb25
    • Bruce Momjian's avatar
      Update TODO list. · 5d53389c
      Bruce Momjian authored
      5d53389c
  3. 19 May, 2001 6 commits
  4. 18 May, 2001 10 commits
  5. 17 May, 2001 19 commits
  6. 16 May, 2001 2 commits
    • Bruce Momjian's avatar
      Add missing paren. · 8128ae68
      Bruce Momjian authored
      8128ae68
    • Tom Lane's avatar
      Repair race condition introduced into heap_update() in 7.1 --- · 27336e4f
      Tom Lane authored
      PageGetFreeSpace() was being called while not holding the buffer lock, which
      not only could yield a garbage answer, but even if it's the right answer there
      might be less space available after we reacquire the buffer lock.
      
      Also repair potential deadlock introduced by my recent performance improvement
      in RelationGetBufferForTuple(): it was possible for two heap_updates to try to
      lock two buffers in opposite orders.  The fix creates a global rule that
      buffers of a single heap relation should be locked in decreasing block number
      order.  Currently, this only applies to heap_update; VACUUM can get away with
      ignoring the rule since it holds exclusive lock on the whole relation anyway.
      However, if we try to implement a VACUUM that can run in parallel with other
      transactions, VACUUM will also have to obey the lock order rule.
      27336e4f