1. 04 Jan, 2007 3 commits
  2. 03 Jan, 2007 8 commits
  3. 02 Jan, 2007 8 commits
  4. 31 Dec, 2006 1 commit
    • Tom Lane's avatar
      Found the problem with my operator-family changes: by fetching from · 0b56be83
      Tom Lane authored
      pg_opclass during LookupOpclassInfo(), I'd turned pg_opclass_oid_index
      into a critical system index.  However the problem could only manifest
      during a backend's first attempt to load opclass data, and then only
      if it had successfully loaded pg_internal.init and subsequently received
      a relcache flush; which made it impossible to reproduce in sequential
      tests and darn hard even in parallel tests.  Memo to self: when
      exercising cache flush scenarios, must disable LookupOpclassInfo's
      internal cache too.
      0b56be83
  5. 30 Dec, 2006 2 commits
  6. 29 Dec, 2006 3 commits
  7. 28 Dec, 2006 11 commits
  8. 27 Dec, 2006 4 commits
    • Tom Lane's avatar
      Use a more backward-compatible syntax for exports.list on Linux. · 65b541b3
      Tom Lane authored
      Per Thorkil Olesen.
      65b541b3
    • Bruce Momjian's avatar
      Clean up pgindent handling of comments after 'else' by only moving · 7accb294
      Bruce Momjian authored
      multi-line comments to the next line.
      7accb294
    • Tom Lane's avatar
      Modify local buffer management to request memory for local buffers in blocks · 72619f81
      Tom Lane authored
      of increasing size, instead of one at a time.  This reduces the memory
      management overhead when num_temp_buffers is large: in the previous coding
      we would actually waste 50% of the space used for temp buffers, because aset.c
      would round the individual requests up to 16K.  Problem noted while studying
      a performance issue reported by Steven Flatt.
      
      Back-patch as far as 8.1 --- older versions used few enough local buffers
      that the issue isn't significant for them.
      72619f81
    • Tom Lane's avatar
      Improve memory management code to avoid inefficient behavior when a context · c22dea89
      Tom Lane authored
      has a small maxBlockSize: the maximum request size that we will treat as a
      "chunk" needs to be limited to fit in maxBlockSize.  Otherwise we will round
      up the request size to the next power of 2, wasting space, which is a bit
      pointless if we aren't going to make the blocks big enough to fit additional
      stuff in them.  The example motivating this is local buffer management, which
      makes repeated allocations of 8K (one BLCKSZ buffer) in TopMemoryContext,
      which has maxBlockSize = 8K because for the most part allocations there are
      small.  This leads to each local buffer actually eating 16K of space, which
      adds up when there are thousands of them.  I intend to change localbuf.c to
      aggregate its requests, which will prevent this particular misbehavior, but
      it seems likely that similar scenarios could arise elsewhere, so fixing the
      core problem seems wise as well.
      c22dea89