1. 02 Dec, 2005 3 commits
    • Bruce Momjian's avatar
      Add calcluation of bitmap storage capacity. · 9322a047
      Bruce Momjian authored
      <   be cleared when a heap tuple is expired.  Another idea is to maintain
      <   a bitmap of heap pages where all rows are visible to all backends,
      <   and allow index lookups to reference that bitmap to avoid heap
      <   lookups, perhaps the same bitmap we might add someday to determine
      <   which heap pages need vacuuming.
      >   be cleared when a heap tuple is expired.
      >
      >   Another idea is to maintain a bitmap of heap pages where all rows
      >   are visible to all backends, and allow index lookups to reference
      >   that bitmap to avoid heap lookups, perhaps the same bitmap we might
      >   add someday to determine which heap pages need vacuuming.  Frequently
      >   accessed bitmaps would have to be stored in shared memory.  One 8k
      >   page of bitmaps could track 512MB of heap pages.
      9322a047
    • Bruce Momjian's avatar
    • Tom Lane's avatar
      Rearrange code in ExecInitBitmapHeapScan so that we don't initialize the · de1dfc12
      Tom Lane authored
      child plan nodes until we have acquired lock on the relation to scan.
      The relative order of initialization of plan nodes isn't real important in
      other cases, but it's critical here because one is supposed to lock a
      relation before its indexes, not vice versa.  The original coding was at
      least vulnerable to deadlock against DROP INDEX, and perhaps worse things.
      de1dfc12
  2. 01 Dec, 2005 11 commits
  3. 30 Nov, 2005 3 commits
  4. 29 Nov, 2005 4 commits
  5. 28 Nov, 2005 10 commits
  6. 27 Nov, 2005 2 commits
  7. 26 Nov, 2005 4 commits
  8. 25 Nov, 2005 2 commits
    • Tom Lane's avatar
      Teach planner and executor to handle ScalarArrayOpExpr as an indexable · 290166f9
      Tom Lane authored
      qualification when the underlying operator is indexable and useOr is true.
      That is, indexkey op ANY (ARRAY[...]) is effectively translated into an
      OR combination of one indexscan for each array element.  This only works
      for bitmap index scans, of course, since regular indexscans no longer
      support OR'ing of scans.  There are still some loose ends to clean up
      before changing 'x IN (list)' to translate as a ScalarArrayOpExpr;
      for instance predtest.c ought to be taught about it.  But this gets the
      basic functionality in place.
      290166f9
    • Tom Lane's avatar
      Improve ExecStoreTuple to be smarter about replacing the contents of · dab52ab1
      Tom Lane authored
      a TupleTableSlot: instead of calling ExecClearTuple, inline the needed
      operations, so that we can avoid redundant steps.  In particular, when
      the old and new tuples are both on the same disk page, avoid releasing
      and re-acquiring the buffer pin --- this saves work in both the bufmgr
      and ResourceOwner modules.  To make this improvement actually useful,
      partially revert a change I made on 2004-04-21 that caused SeqNext
      et al to call ExecClearTuple before ExecStoreTuple.  The motivation
      for that, to avoid grabbing the BufMgrLock separately for releasing
      the old buffer and grabbing the new one, no longer applies.  My
      profiling says that this saves about 5% of the CPU time for an
      all-in-memory seqscan.
      dab52ab1
  9. 24 Nov, 2005 1 commit