1. 17 9月, 2011 2 次提交
    • T
      Avoid unnecessary page-level SSI lock check in heap_insert(). · 9d306c66
      Tom Lane 提交于
      As observed by Heikki, we need not conflict on heap page locks during an
      insert; heap page locks are only aggregated tuple locks, they don't imply
      locking "gaps" as index page locks do.  So we can avoid some unnecessary
      conflicts, and also do the SSI check while not holding exclusive lock on
      the target buffer.
      
      Kevin Grittner, reviewed by Jeff Davis.  Back-patch to 9.1.
      9d306c66
    • T
      Ensure generic plan gets used for a plpgsql expression with no parameters. · e6ed34f7
      Tom Lane 提交于
      Now that a NULL ParamListInfo pointer causes significantly different
      behavior in plancache.c, be sure to pass it that way when the expression
      is known not to reference any plpgsql variables.  Saves a few setup
      cycles anyway.
      e6ed34f7
  2. 16 9月, 2011 2 次提交
    • T
      gistendscan() forgot to free so->giststate. · 0a6cc285
      Tom Lane 提交于
      This oversight led to a massive memory leak --- upwards of 10KB per tuple
      --- during creation-time verification of an exclusion constraint based on a
      GIST index.  In most other scenarios it'd just be a leak of 10KB that would
      be recovered at end of query, so not too significant; though perhaps the
      leak would be noticeable in a situation where a GIST index was being used
      in a nestloop inner indexscan.  In any case, it's a real leak of long
      standing, so patch all supported branches.  Per report from Harald Fuchs.
      0a6cc285
    • T
      Redesign the plancache mechanism for more flexibility and efficiency. · e6faf910
      Tom Lane 提交于
      Rewrite plancache.c so that a "cached plan" (which is rather a misnomer
      at this point) can support generation of custom, parameter-value-dependent
      plans, and can make an intelligent choice between using custom plans and
      the traditional generic-plan approach.  The specific choice algorithm
      implemented here can probably be improved in future, but this commit is
      all about getting the mechanism in place, not the policy.
      
      In addition, restructure the API to greatly reduce the amount of extraneous
      data copying needed.  The main compromise needed to make that possible was
      to split the initial creation of a CachedPlanSource into two steps.  It's
      worth noting in particular that SPI_saveplan is now deprecated in favor of
      SPI_keepplan, which accomplishes the same end result with zero data
      copying, and no need to then spend even more cycles throwing away the
      original SPIPlan.  The risk of long-term memory leaks while manipulating
      SPIPlans has also been greatly reduced.  Most of this improvement is based
      on use of the recently-added MemoryContextSetParent primitive.
      e6faf910
  3. 14 9月, 2011 3 次提交
  4. 13 9月, 2011 2 次提交
  5. 12 9月, 2011 4 次提交
    • H
      In the final emptying phase of the new GiST buffering build, set the · 8caf6132
      Heikki Linnakangas 提交于
      queuedForEmptying flag correctly on buffer when adding it to the queue.
      Also, don't add buffer to the queue if it's there already. These were
      harmless oversights; failing to set the flag just means that a buffer might
      get added to the queue twice if more tuples are added to it (although that
      can't actually happen at this point because all the upper buffers have
      already been emptied), and having the same buffer twice in the emptying
      queue is harmless. But better be tidy.
      8caf6132
    • T
      Invent a new memory context primitive, MemoryContextSetParent. · b0025bd9
      Tom Lane 提交于
      This function will be useful for altering the lifespan of a context after
      creation (for example, by creating it under a transient context and later
      reparenting it to belong to a long-lived context).  It costs almost no new
      code, since we can refactor what was there.  Per my proposal of yesterday.
      b0025bd9
    • T
      Remove no-longer-used variable. · 5f42e594
      Tom Lane 提交于
      5f42e594
    • P
      Remove many -Wcast-qual warnings · 1b81c2fe
      Peter Eisentraut 提交于
      This addresses only those cases that are easy to fix by adding or
      moving a const qualifier or removing an unnecessary cast.  There are
      many more complicated cases remaining.
      1b81c2fe
  6. 11 9月, 2011 4 次提交
  7. 10 9月, 2011 5 次提交
  8. 09 9月, 2011 3 次提交
  9. 08 9月, 2011 10 次提交
  10. 07 9月, 2011 5 次提交