1. 19 Feb, 2005 4 commits
  2. 18 Feb, 2005 1 commit
  3. 15 Feb, 2005 9 commits
  4. 14 Feb, 2005 6 commits
  5. 13 Feb, 2005 5 commits
  6. 12 Feb, 2005 1 commit
  7. 11 Feb, 2005 6 commits
  8. 10 Feb, 2005 7 commits
  9. 09 Feb, 2005 1 commit
    • Neil Conway's avatar
      ALTER TABLE ADD COLUMN exhibits a significant memory leak when adding a · 3df9abd1
      Neil Conway authored
      column with a default expression. In that situation, we need to rewrite
      the heap relation. To evaluate the new default expression, we use
      ExecEvalExpr(); however, this can allocate memory in the current memory
      context, and ATRewriteTable() does not switch out of the active portal's
      heap memory context. The end result is a rather large memory leak (on
      the order of gigabytes for a reasonably sized table).
      
      This patch changes ATRewriteTable() to switch to the per-tuple memory
      context before beginning the per-tuple loop. It also removes an explicit
      heap_freetuple() in the loop, since that is no longer needed.
      
      In an unrelated change, I noticed the code was scanning through the
      attributes of the new tuple descriptor for each tuple of the old table.
      I changed this to use precomputation, which should slightly speed up
      the loop.
      
      Thanks to steve@deefs.net for reporting the leak.
      3df9abd1