1. 29 Sep, 2011 1 commit
  2. 28 Sep, 2011 2 commits
    • Tom Lane's avatar
      Update and extend the EXPLAIN-related documentation. · a32dd164
      Tom Lane authored
      I've made a significant effort at filling in the "Using EXPLAIN" section
      to be reasonably complete about mentioning everything that EXPLAIN can
      output, including the "Rows Removed" outputs that were added by Marko
      Tiikkaja's recent documentation-free patch.  I also updated the examples to
      be consistent with current behavior; several of them were not close to what
      the current code will do.  No doubt there's more that can be done here, but
      I'm out of patience for today.
      a32dd164
    • Tom Lane's avatar
      Take sepgsql regression tests out of the regular regression test mechanism. · cc4ff874
      Tom Lane authored
      Because these tests require root privileges, not to mention invasive
      changes to the security configuration of the host system, it's not
      reasonable for them to be invoked by a regular "make check" or "make
      installcheck".  Instead, dike out the Makefile's knowledge of the tests,
      and change chkselinuxenv (now renamed "test_sepgsql") into a script that
      verifies the environment is workable and then runs the tests.  It's
      expected that test_sepgsql will only be run manually.
      
      While at it, do some cleanup in the error checking in the script, and
      do some wordsmithing in the documentation.
      cc4ff874
  3. 27 Sep, 2011 7 commits
    • Alvaro Herrera's avatar
      Remove dependency on error ordering in isolation tests · bbd38af3
      Alvaro Herrera authored
      We now report errors reported by the just-unblocked and unblocking
      transactions identically; this should fix relatively common buildfarm
      failures reported by animals that are failing the "wrong" session.
      bbd38af3
    • Alvaro Herrera's avatar
      Fix typo · 17349927
      Alvaro Herrera authored
      17349927
    • Robert Haas's avatar
      Update comments related to the crash-safety of the visibility map. · f70648d5
      Robert Haas authored
      In hio.c, document how we avoid deadlock with respect to visibility map
      buffer locks.  In visibilitymap.c, update the LOCKING section of the
      file header comment.
      
      Both oversights noted by Heikki Linnakangas.
      f70648d5
    • Robert Haas's avatar
      sepgsql uavc comment improvements. · a9d845be
      Robert Haas authored
      Robert Haas and KaiGai Kohei
      a9d845be
    • Robert Haas's avatar
      heap_update() must recheck tuple after unlocking and relocking buffer. · 624f155f
      Robert Haas authored
      Bug found by Alvaro Herrera, fix suggested by Heikki Linnakangas
      and reviewed by Tom Lane.
      624f155f
    • Tom Lane's avatar
      Fix window functions that sort by expressions involving aggregates. · 269c5dd2
      Tom Lane authored
      In commit c1d9579d, I changed things so
      that the output of the Agg node that feeds the window functions would not
      list any ungrouped Vars directly.  Formerly, for example, the Agg tlist
      might have included both "x" and "sum(x)", which is not really valid if
      "x" isn't a grouping column.  If we then had a window function ordering on
      something like "sum(x) + 1", prepare_sort_from_pathkeys would find no exact
      match for this in the Agg tlist, and would conclude that it must recompute
      the expression.  But it would break the expression down to just the Var
      "x", which it would find in the tlist, and then rebuild the ORDER BY
      expression using a reference to the subplan's "x" output.  Now, after the
      above-referenced changes, "x" isn't in the Agg tlist if it's not a grouping
      column, so that prepare_sort_from_pathkeys fails with "could not find
      pathkey item to sort", as reported by Bricklen Anderson.
      
      The fix is to not break down Aggrefs into their component parts, but just
      treat them as irreducible expressions to be sought in the subplan tlist.
      This is definitely OK for the use with respect to window functions in
      grouping_planner, since it just built the tlist being used on the same
      basis.  AFAICT it is safe for other uses too; most of the other call sites
      couldn't encounter Aggrefs anyway.
      269c5dd2
    • Tom Lane's avatar
      Allow snapshot references to still work during transaction abort. · 57eb0090
      Tom Lane authored
      In REPEATABLE READ (nee SERIALIZABLE) mode, an attempt to do
      GetTransactionSnapshot() between AbortTransaction and CleanupTransaction
      failed, because GetTransactionSnapshot would recompute the transaction
      snapshot (which is already wrong, given the isolation mode) and then
      re-register it in the TopTransactionResourceOwner, leading to an Assert
      because the TopTransactionResourceOwner should be empty of resources after
      AbortTransaction.  This is the root cause of bug #6218 from Yamamoto
      Takashi.  While changing plancache.c to avoid requesting a snapshot when
      handling a ROLLBACK masks the problem, I think this is really a snapmgr.c
      bug: it's lower-level than the resource manager mechanism and should not be
      shutting itself down before we unwind resource manager resources.  However,
      just postponing the release of the transaction snapshot until cleanup time
      didn't work because of the circular dependency with
      TopTransactionResourceOwner.  Fix by managing the internal reference to
      that snapshot manually instead of depending on TopTransactionResourceOwner.
      This saves a few cycles as well as making the module layering more
      straightforward.  predicate.c's dependencies on TopTransactionResourceOwner
      go away too.
      
      I think this is a longstanding bug, but there's no evidence that it's more
      than a latent bug, so it doesn't seem worth any risk of back-patching.
      57eb0090
  4. 26 Sep, 2011 3 commits
  5. 25 Sep, 2011 4 commits
    • Tom Lane's avatar
      Fully const-ify PQconnectdbParams, PQconnectStartParams, and PQpingParams. · 2a571bc2
      Tom Lane authored
      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
    • Tom Lane's avatar
      Avoid unnecessary snapshot-acquisitions in BuildCachedPlan. · d5aa7a9f
      Tom Lane authored
      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
    • Bruce Momjian's avatar
      In pgrminclude, document requirement to use pgcompinclude, and sort · 2594ad74
      Bruce Momjian authored
      files so include removal is more predictable.
      2594ad74
    • Tom Lane's avatar
      Un-break compression of plain-text output format in pg_dump. · 23fe7a74
      Tom Lane authored
      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
  6. 24 Sep, 2011 7 commits
    • Bruce Momjian's avatar
      Document pgrminclude limitations. · 84bbe57d
      Bruce Momjian authored
      84bbe57d
    • Tom Lane's avatar
      Recognize self-contradictory restriction clauses for non-table relations. · 7741dd65
      Tom Lane authored
      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
    • Bruce Momjian's avatar
    • Magnus Hagander's avatar
      Fix typo · 0126db2a
      Magnus Hagander authored
      0126db2a
    • Magnus Hagander's avatar
      Note that sslmode=require verifies the CA if root cert is present · 33e81fdf
      Magnus Hagander authored
      This mode still exists for backwards compatibility, making
      sslmode=require the same as sslmode=verify-ca when the file is present,
      but not causing an error when it isn't.
      
      Per bug 6189, reported by Srinivas Aji
      33e81fdf
    • Tom Lane's avatar
      Fix our mapping of Windows timezones for Central America. · 4c5d837e
      Tom Lane authored
      We were mapping "Central America Standard Time" to "CST6CDT", which seems
      entirely wrong, because according to the Olson timezone database noplace
      in Central America observes daylight savings time on any regular basis ---
      and certainly not according to the USA DST rules that are implied by
      "CST6CDT".  (Mexico is an exception, but they can be disregarded since
      they have a separate timezone name in Windows.)  So, map this zone name to
      plain "CST6", which will provide a fixed UTC offset.
      
      As written, this patch will also result in mapping "Central America
      Daylight Time" to CST6.  I considered hacking things so that would still
      map to CST6CDT, but it seems it would confuse win32tzlist.pl to put those
      two names in separate entries.  Since there's little evidence that any
      such zone name is used in the wild, much less that CST6CDT would be a good
      match for it, I'm not too worried about what we do with it.
      
      Per complaint from Pratik Chirania.
      4c5d837e
    • Tom Lane's avatar
      Update win32tzlist.pl for the new location of our Windows timezone map. · 14a18326
      Tom Lane authored
      I wasn't aware of this script till Magnus mentioned it just now ...
      14a18326
  7. 23 Sep, 2011 6 commits
  8. 22 Sep, 2011 2 commits
    • Tom Lane's avatar
      Update release notes for 9.1.1, 9.0.5, 8.4.9, 8.3.16, 8.2.22. · 614421f9
      Tom Lane authored
      Man, we fixed a lotta bugs since April.
      614421f9
    • Tom Lane's avatar
      Make EXPLAIN ANALYZE report the numbers of rows rejected by filter steps. · f1972723
      Tom Lane authored
      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
  9. 21 Sep, 2011 1 commit
    • Robert Haas's avatar
      Fix another bit of unlogged-table-induced breakage. · 4893552e
      Robert Haas authored
      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
  10. 20 Sep, 2011 2 commits
    • Tom Lane's avatar
      Suppress "unused function" warning when not HAVE_LOCALE_T. · 2562dcea
      Tom Lane authored
      Forgot to consider this case ...
      2562dcea
    • Tom Lane's avatar
      Improve reporting of newlocale() failures in CREATE COLLATION. · 37d4fd2b
      Tom Lane authored
      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
  11. 19 Sep, 2011 1 commit
    • Tom Lane's avatar
      Fix another Assert issue exposed by CLOBBER_CACHE_ALWAYS. · faf5cee7
      Tom Lane authored
      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
  12. 17 Sep, 2011 1 commit
    • Tom Lane's avatar
      Fix Assert failure in new plancache code. · c4ae9686
      Tom Lane authored
      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
  13. 16 Sep, 2011 3 commits
    • Tom Lane's avatar
      Remove debug logging for pgstat wait timeout. · 99b54541
      Tom Lane authored
      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
    • Tom Lane's avatar
      Add FORCE_NOT_NULL support to the file_fdw foreign data wrapper. · 86a3f2d4
      Tom Lane authored
      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
    • Tom Lane's avatar
      Avoid unnecessary page-level SSI lock check in heap_insert(). · 9d306c66
      Tom Lane authored
      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