1. 26 9月, 2011 4 次提交
    • T
      Fully const-ify PQconnectdbParams, PQconnectStartParams, and PQpingParams. · 2a571bc2
      Tom Lane 提交于
      The keywords and values arguments of these functions are more properly
      declared "const char * const *" than just "const char **".
      
      Lionel Elie Mamane, reviewed by Craig Ringer
      2a571bc2
    • T
      Avoid unnecessary snapshot-acquisitions in BuildCachedPlan. · d5aa7a9f
      Tom Lane 提交于
      I had copied-and-pasted a claim that we couldn't reach this point when
      dealing with utility statements, but that was a leftover from when the
      caller was required to supply a plan to start with.  We now will go
      through here at least once when handling a utility statement, so it
      seems worth a check to see whether a snapshot is actually needed.
      (Note that analyze_requires_snapshot is quite a cheap test.)
      
      Per suggestion from Yamamoto Takashi.  I don't think I believe that this
      resolves his reported assertion failure; but it's worth changing anyway,
      just to save a cycle or two.
      d5aa7a9f
    • B
      In pgrminclude, document requirement to use pgcompinclude, and sort · 2594ad74
      Bruce Momjian 提交于
      files so include removal is more predictable.
      2594ad74
    • T
      Un-break compression of plain-text output format in pg_dump. · 23fe7a74
      Tom Lane 提交于
      pg_dump has historically understood -Z with no -F switch to mean that
      it should emit a gzip-compressed version of its plain text output.
      This got broken through a misunderstanding in the 9.1 patch that added
      directory output format.  Restore the former behavior.
      
      Per complaint from Roger Niederland and diagnosis by Adrian Klaver.
      23fe7a74
  2. 25 9月, 2011 2 次提交
    • B
      Document pgrminclude limitations. · 84bbe57d
      Bruce Momjian 提交于
      84bbe57d
    • T
      Recognize self-contradictory restriction clauses for non-table relations. · 7741dd65
      Tom Lane 提交于
      The constraint exclusion feature checks for contradictions among scan
      restriction clauses, as well as contradictions between those clauses and a
      table's CHECK constraints.  The first aspect of this testing can be useful
      for non-table relations (such as subqueries or functions-in-FROM), but the
      feature was coded with only the CHECK case in mind so we were applying it
      only to plain-table RTEs.  Move the relation_excluded_by_constraints call
      so that it is applied to all RTEs not just plain tables.  With the default
      setting of constraint_exclusion this results in no extra work, but with
      constraint_exclusion = ON we will detect optimizations that we missed
      before (at the cost of more planner cycles than we expended before).
      
      Per a gripe from Gunnlaugur Þór Briem.  Experimentation with
      his example also showed we were not being very bright about the case where
      constraint exclusion is proven within a subquery within UNION ALL, so tweak
      the code to allow set_append_rel_pathlist to recognize such cases.
      7741dd65
  3. 24 9月, 2011 9 次提交
  4. 23 9月, 2011 3 次提交
  5. 22 9月, 2011 1 次提交
    • T
      Make EXPLAIN ANALYZE report the numbers of rows rejected by filter steps. · f1972723
      Tom Lane 提交于
      This provides information about the numbers of tuples that were visited
      but not returned by table scans, as well as the numbers of join tuples
      that were considered and discarded within a join plan node.
      
      There is still some discussion going on about the best way to report counts
      for outer-join situations, but I think most of what's in the patch would
      not change if we revise that, so I'm going to go ahead and commit it as-is.
      
      Documentation changes to follow (they weren't in the submitted patch
      either).
      
      Marko Tiikkaja, reviewed by Marc Cousin, somewhat revised by Tom
      f1972723
  6. 21 9月, 2011 3 次提交
    • R
      Fix another bit of unlogged-table-induced breakage. · 4893552e
      Robert Haas 提交于
      Per bug #6205, reported by Abel Abraham Camarillo Ojeda.  This isn't a
      particularly elegant fix, but I'm trying to minimize the chances of
      causing yet another round of breakage.
      
      Adjust regression tests to exercise this case.
      4893552e
    • T
      Suppress "unused function" warning when not HAVE_LOCALE_T. · 2562dcea
      Tom Lane 提交于
      Forgot to consider this case ...
      2562dcea
    • T
      Improve reporting of newlocale() failures in CREATE COLLATION. · 37d4fd2b
      Tom Lane 提交于
      The standardized errno code for "no such locale" failures is ENOENT, which
      we were just reporting at face value, viz "No such file or directory".
      Per gripe from Thom Brown, this might confuse users, so add an errdetail
      message to clarify what it means.  Also, report newlocale() failures as
      ERRCODE_INVALID_PARAMETER_VALUE rather than using
      errcode_for_file_access(), since newlocale()'s errno values aren't
      necessarily tied directly to file access failures.
      37d4fd2b
  7. 19 9月, 2011 1 次提交
    • T
      Fix another Assert issue exposed by CLOBBER_CACHE_ALWAYS. · faf5cee7
      Tom Lane 提交于
      plpgsql's exec_stmt_execsql was Assert'ing that a CachedPlanSource was
      is_valid immediately after exec_prepare_plan.  The risk factor in this case
      is that after building the prepared statement, exec_prepare_plan calls
      exec_simple_check_plan, which might try to generate a generic plan --- and
      with CLOBBER_CACHE_ALWAYS or other unusual causes of invalidation, that
      could result in an invalidation.  However, that path could only be taken
      for a SELECT query, for which we need not set mod_stmt.  So in this case
      I think it's best to just remove the Assert; it's okay to look at a
      slightly-stale querytree for what we need here.  Per buildfarm testing.
      faf5cee7
  8. 17 9月, 2011 5 次提交
    • T
      Fix Assert failure in new plancache code. · c4ae9686
      Tom Lane 提交于
      The regression tests were failing with CLOBBER_CACHE_ALWAYS enabled,
      as reported by buildfarm member jaguar.  There was an Assert in
      BuildCachedPlan that asserted that the CachedPlanSource hadn't been
      invalidated since we called RevalidateCachedQuery, which in theory can't
      happen because we are holding locks on all the relevant database objects.
      However, CLOBBER_CACHE_ALWAYS generates a false positive by making an
      invalidation happen anyway; and on reflection, that could also occur as a
      result of a badly-timed sinval reset due to queue overflow.  We could just
      remove the Assert and forge ahead with the not-really-stale querytree, but
      it seems safer to do another RevalidateCachedQuery call just to make real
      sure everything's OK.
      c4ae9686
    • T
      Remove debug logging for pgstat wait timeout. · 99b54541
      Tom Lane 提交于
      This reverts commit 79b2ee20, which proved
      to not be very informative; it looks like the "pgstat wait timeout"
      warnings in the buildfarm are just a symptom of running on heavily loaded
      machines, and there isn't any weird mechanism causing them to appear.
      
      To try to reduce the frequency of buildfarm failures from this effect,
      increase PGSTAT_MAX_WAIT_TIME from 5 seconds to 10.
      
      Also, arrange to not send a fresh inquiry message every single time through
      the loop, as that seems more likely to cause problems (by swamping the
      collector) than fix them.  We'll now send an inquiry the first time through
      the delay loop, and every 640 msec thereafter.
      99b54541
    • T
      Add FORCE_NOT_NULL support to the file_fdw foreign data wrapper. · 86a3f2d4
      Tom Lane 提交于
      This is implemented as a per-column boolean option, rather than trying
      to match COPY's convention of a single option listing the column names.
      
      Shigeru Hanada, reviewed by KaiGai Kohei
      86a3f2d4
    • 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
  9. 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
  10. 14 9月, 2011 3 次提交
  11. 13 9月, 2011 2 次提交
  12. 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
  13. 11 9月, 2011 1 次提交