1. 31 10月, 2008 7 次提交
  2. 30 10月, 2008 5 次提交
  3. 29 10月, 2008 8 次提交
  4. 28 10月, 2008 7 次提交
  5. 27 10月, 2008 5 次提交
  6. 26 10月, 2008 3 次提交
    • T
      Better solution to the IN-list issue: instead of having an arbitrary cutoff, · 0aed62fe
      Tom Lane 提交于
      treat Var and non-Var IN-list items differently.  Only non-Var items are
      candidates to go into an ANY(ARRAY) construct --- we put all Vars as separate
      OR conditions on the grounds that that leaves more scope for optimization.
      Per suggestion from Robert Haas.
      0aed62fe
    • T
      Be a little smarter about qual handling for semi-joins: a qual that mentions · aa0fb530
      Tom Lane 提交于
      only the outer side can be pushed down rather than having to be evaluated
      at the join.
      aa0fb530
    • T
      Add a heuristic to transformAExprIn() to make it prefer expanding "x IN (list)" · ddbe8dca
      Tom Lane 提交于
      into an OR of equality comparisons, rather than x = ANY(ARRAY[...]), when there
      are Vars in the right-hand side.  This avoids a performance regression compared
      to pre-8.2 releases, in cases where the OR form can be optimized into scans
      of multiple indexes.  Limit the possible downside by preferring this form only
      when the list isn't very long (I set the cutoff at 32 elements, which is a
      bit arbitrary but in the right ballpark).  Per discussion with Jim Nasby.
      
      In passing, also make it try the OR form if it cannot select a common type
      for the array elements; we've seen a complaint or two about how the OR form
      worked for such cases and ARRAY doesn't.
      ddbe8dca
  7. 25 10月, 2008 1 次提交
    • T
      Reduce the memory footprint of large pending-trigger-event lists, as per my · 312b1a98
      Tom Lane 提交于
      recent proposal.  In typical cases, we now need 12 bytes per insert or delete
      event and 16 bytes per update event; previously we needed 40 bytes per
      event on 32-bit hardware and 80 bytes per event on 64-bit hardware.  Even
      in the worst case usage pattern with a large number of distinct triggers being
      fired in one query, usage is at most 32 bytes per event.  It seems to be a
      bit faster than the old code as well, due to reduction of palloc overhead.
      
      This commit doesn't address the TODO item of allowing the event list to spill
      to disk; rather it's trying to stave off the need for that.  However, it
      probably makes that task a bit easier by reducing the data structure's
      dependency on pointers.  It would now be practical to dump an event list to
      disk by "chunks" instead of individual events.
      312b1a98
  8. 24 10月, 2008 4 次提交