1. 28 Jan, 2012 2 commits
    • Tom Lane's avatar
      Undo 8.4-era lobotomization of subquery pullup rules. · 0816fad6
      Tom Lane authored
      After the planner was fixed to convert some IN/EXISTS subqueries into
      semijoins or antijoins, we had to prevent it from doing that in some
      cases where the plans risked getting much worse.  The reason the plans
      got worse was that in the unoptimized implementation, subqueries could
      reference parameters from the outer query at any join level, and so
      full table scans could be avoided even if they were one or more levels
      of join below where the semi/anti join would be.  Now that we have
      sufficient mechanism in the planner to handle such cases properly,
      it should no longer be necessary to play dumb here.
      
      This reverts commits 07b9936a and
      cd1f0d04.  The latter was a stopgap
      fix that wasn't really sufficiently analyzed at the time.  Rather
      than just restricting ourselves to cases where the new join can be
      stacked on the right-hand input, we should also consider whether it
      can be stacked on the left-hand input.
      0816fad6
    • Tom Lane's avatar
      Use parameterized paths to generate inner indexscans more flexibly. · e2fa76d8
      Tom Lane authored
      This patch fixes the planner so that it can generate nestloop-with-
      inner-indexscan plans even with one or more levels of joining between
      the indexscan and the nestloop join that is supplying the parameter.
      The executor was fixed to handle such cases some time ago, but the
      planner was not ready.  This should improve our plans in many situations
      where join ordering restrictions formerly forced complete table scans.
      
      There is probably a fair amount of tuning work yet to be done, because
      of various heuristics that have been added to limit the number of
      parameterized paths considered.  However, we are not going to find out
      what needs to be adjusted until the code gets some real-world use, so
      it's time to get it in there where it can be tested easily.
      
      Note API change for index AM amcostestimate functions.  I'm not aware of
      any non-core index AMs, but if there are any, they will need minor
      adjustments.
      e2fa76d8
  2. 27 Jan, 2012 13 commits
  3. 26 Jan, 2012 11 commits
  4. 25 Jan, 2012 8 commits
  5. 24 Jan, 2012 6 commits