1. 11 Aug, 2013 1 commit
  2. 10 Aug, 2013 1 commit
  3. 09 Aug, 2013 3 commits
  4. 08 Aug, 2013 1 commit
  5. 07 Aug, 2013 1 commit
    • Fujii Masao's avatar
      Fix assertion failure by an immediate shutdown. · 91c3613d
      Fujii Masao authored
      In PM_WAIT_DEAD_END state, checkpointer process must be dead already.
      But an immediate shutdown could make postmaster's state machine
      transition to PM_WAIT_DEAD_END state even if checkpointer process is
      still running,  and which caused assertion failure. This bug was introduced
      in commit 457d6cf0.
      
      This patch ensures that postmaster's state machine doesn't transition to
      PM_WAIT_DEAD_END state in an immediate shutdown while checkpointer
      process is running.
      91c3613d
  6. 05 Aug, 2013 3 commits
    • Bruce Momjian's avatar
      pgtest: allow passing parameters, e.g. -s/--silent · f347f268
      Bruce Momjian authored
      Previously only -n was recognized.
      f347f268
    • Tom Lane's avatar
      Simplify query_planner's API by having it return the top-level RelOptInfo. · 3ced8837
      Tom Lane authored
      Formerly, query_planner returned one or possibly two Paths for the topmost
      join relation, so that grouping_planner didn't see the join RelOptInfo
      (at least not directly; it didn't have any hesitation about examining
      cheapest_path->parent, though).  However, correct selection of the Paths
      involved a significant amount of coupling between query_planner and
      grouping_planner, a problem which has gotten worse over time.  It seems
      best to give up on this API choice and instead return the topmost
      RelOptInfo explicitly.  Then grouping_planner can pull out the Paths it
      wants from the rel's path list.  In this way we can remove all knowledge
      of grouping behaviors from query_planner.
      
      The only real benefit of the old way is that in the case of an empty
      FROM clause, we never made any RelOptInfos at all, just a Path.  Now
      we have to gin up a dummy RelOptInfo to represent the empty FROM clause.
      That's not a very big deal though.
      
      While at it, simplify query_planner's API a bit more by having the caller
      set up root->tuple_fraction and root->limit_tuples, rather than passing
      those values as separate parameters.  Since query_planner no longer does
      anything with either value, requiring it to fill the PlannerInfo fields
      seemed pretty arbitrary.
      
      This patch just rearranges code; it doesn't (intentionally) change any
      behaviors.  Followup patches will do more interesting things.
      3ced8837
    • Kevin Grittner's avatar
      Various cleanups for REFRESH MATERIALIZED VIEW CONCURRENTLY. · 841c29c8
      Kevin Grittner authored
      Open and lock each index before checking definition in RMVC.  The
      ExclusiveLock on the related table is not viewed as sufficient to
      ensure that no changes are made to the index definition, and
      invalidation messages from other backends might have been missed.
      Additionally, use RelationGetIndexExpressions() and check for NIL
      rather than doing our own loop.
      
      Protect against redefinition of tid and rowvar operators in RMVC.
      While working on this, noticed that the fixes for bugs found during
      the CF made the UPDATE statement useless, since no rows could
      qualify for that treatment any more.  Ripping out code to support
      the UPDATE statement simplified the operator cleanups.
      
      Change slightly confusing local field name.
      
      Use meaningful alias names on queries in refresh_by_match_merge().
      
      Per concerns of raised by Andres Freund and comments and
      suggestions from Noah Misch.  Some additional issues remain, which
      will be addressed separately.
      841c29c8
  7. 03 Aug, 2013 1 commit
    • Tom Lane's avatar
      Make sure float4in/float8in accept all standard spellings of "infinity". · 221e92f6
      Tom Lane authored
      The C99 and POSIX standards require strtod() to accept all these spellings
      (case-insensitively): "inf", "+inf", "-inf", "infinity", "+infinity",
      "-infinity".  However, pre-C99 systems might accept only some or none of
      these, and apparently Windows still doesn't accept "inf".  To avoid
      surprising cross-platform behavioral differences, manually check for each
      of these spellings if strtod() fails.  We were previously handling just
      "infinity" and "-infinity" that way, but since C99 is most of the world
      now, it seems likely that applications are expecting all these spellings
      to work.
      
      Per bug #8355 from Basil Peace.  It turns out this fix won't actually
      resolve his problem, because Python isn't being this careful; but that
      doesn't mean we shouldn't be.
      221e92f6
  8. 02 Aug, 2013 4 commits
    • Alvaro Herrera's avatar
      Fix old visibility bug in HeapTupleSatisfiesDirty · 706f9dd9
      Alvaro Herrera authored
      If a tuple is locked but not updated by a concurrent transaction,
      HeapTupleSatisfiesDirty would return that transaction's Xid in xmax,
      causing callers to wait on it, when it is not necessary (in fact, if the
      other transaction had used a multixact instead of a plain Xid to mark
      the tuple, HeapTupleSatisfiesDirty would have behave differently and
      *not* returned the Xmax).
      
      This bug was introduced in commit 3f7fbf85, dated December 1998,
      so it's almost 15 years old now.  However, it's hard to see this
      misbehave, because before we had NOWAIT the only consequence of this is
      that transactions would wait for slightly more time than necessary; so
      it's not surprising that this hasn't been reported yet.
      
      Craig Ringer and Andres Freund
      706f9dd9
    • Alvaro Herrera's avatar
      Fix crash in error report of invalid tuple lock · 88c55668
      Alvaro Herrera authored
      My tweak of these error messages in commit c359a1b0 contained the
      thinko that a query would always have rowMarks set for a query
      containing a locking clause.  Not so: when declaring a cursor, for
      instance, rowMarks isn't set at the point we're checking, so we'd be
      dereferencing a NULL pointer.
      
      The fix is to pass the lock strength to the function raising the error,
      instead of trying to reverse-engineer it.  The result not only is more
      robust, but it also seems cleaner overall.
      
      Per report from Robert Haas.
      88c55668
    • Robert Haas's avatar
      Fix typo in comment. · 05ee328d
      Robert Haas authored
      Etsuro Fujita
      05ee328d
    • Bruce Momjian's avatar
      pg_test_fsync: expand ops/sec display · 43f63889
      Bruce Momjian authored
      Expand ops/sec by two digits to maintain alignment on servers with fast
      I/O subsystems, e.g. can now display < 10M ops/sec with consistent
      alignment.
      43f63889
  9. 01 Aug, 2013 6 commits
    • Stephen Frost's avatar
      Improve handling of pthread_mutex_lock error case · 8359ed80
      Stephen Frost authored
      We should really be reporting a useful error along with returning
      a valid return code if pthread_mutex_lock() throws an error for
      some reason.  Add that and back-patch to 9.0 as the prior patch.
      
      Pointed out by Alvaro Herrera
      8359ed80
    • Kevin Grittner's avatar
      Improve comments for IncrementalMaintenance DML enabling functions. · f31c149f
      Kevin Grittner authored
      Move the static functions after the comment and expand the comment.
      
      Per complaint from Andres Freund, although using different comment
      text.
      f31c149f
    • Robert Haas's avatar
      Assorted bgworker-related comment fixes. · 149e38e5
      Robert Haas authored
      Per gripes by Amit Kapila.
      149e38e5
    • Robert Haas's avatar
      Remove SnapshotNow and HeapTupleSatisfiesNow. · 813fb031
      Robert Haas authored
      We now use MVCC catalog scans, and, per discussion, have eliminated
      all other remaining uses of SnapshotNow, so that we can now get rid of
      it.  This will break third-party code which is still using it, which
      is intentional, as we want such code to be updated to do things the
      new way.
      813fb031
    • Stephen Frost's avatar
      Add locking around SSL_context usage in libpq · aad2a630
      Stephen Frost authored
      I've been working with Nick Phillips on an issue he ran into when
      trying to use threads with SSL client certificates.  As it turns out,
      the call in initialize_SSL() to SSL_CTX_use_certificate_chain_file()
      will modify our SSL_context without any protection from other threads
      also calling that function or being at some other point and trying to
      read from SSL_context.
      
      To protect against this, I've written up the attached (based on an
      initial patch from Nick and much subsequent discussion) which puts
      locks around SSL_CTX_use_certificate_chain_file() and all of the other
      users of SSL_context which weren't already protected.
      
      Nick Phillips, much reworked by Stephen Frost
      
      Back-patch to 9.0 where we started loading the cert directly instead of
      using a callback.
      aad2a630
    • Stephen Frost's avatar
      Allow a context to be passed in for error handling · ddef1a39
      Stephen Frost authored
      As pointed out by Tom Lane, we can allow other users of the error
      handler callbacks to provide their own memory context by adding
      the context to use to ErrorData and using that instead of explicitly
      using ErrorContext.
      
      This then allows GetErrorContextStack() to be called from inside
      exception handlers, so modify plpgsql to take advantage of that and
      add an associated regression test for it.
      ddef1a39
  10. 31 Jul, 2013 6 commits
  11. 30 Jul, 2013 2 commits
  12. 29 Jul, 2013 3 commits
  13. 28 Jul, 2013 1 commit
  14. 27 Jul, 2013 1 commit
    • Bruce Momjian's avatar
      pg_upgrade: fix -j race condition on Windows · 815fcd05
      Bruce Momjian authored
      Pg_Upgrade cannot write the command string to the log file and then call
      system() to write to the same file without causing occasional file-share
      errors on Windows.  So instead, write the command string to the log file
      after system(), in those cases.
      Backpatch to 9.3.
      815fcd05
  15. 26 Jul, 2013 1 commit
  16. 25 Jul, 2013 5 commits
    • Tom Lane's avatar
      Prevent leakage of SPI tuple tables during subtransaction abort. · 3d13623d
      Tom Lane authored
      plpgsql often just remembers SPI-result tuple tables in local variables,
      and has no mechanism for freeing them if an ereport(ERROR) causes an escape
      out of the execution function whose local variable it is.  In the original
      coding, that wasn't a problem because the tuple table would be cleaned up
      when the function's SPI context went away during transaction abort.
      However, once plpgsql grew the ability to trap exceptions, repeated
      trapping of errors within a function could result in significant
      intra-function-call memory leakage, as illustrated in bug #8279 from
      Chad Wagner.
      
      We could fix this locally in plpgsql with a bunch of PG_TRY/PG_CATCH
      coding, but that would be tedious, probably slow, and prone to bugs of
      omission; moreover it would do nothing for similar risks elsewhere.
      What seems like a better plan is to make SPI itself responsible for
      freeing tuple tables at subtransaction abort.  This patch attacks the
      problem that way, keeping a list of live tuple tables within each SPI
      function context.  Currently, such freeing is automatic for tuple tables
      made within the failed subtransaction.  We might later add a SPI call to
      mark a tuple table as not to be freed this way, allowing callers to opt
      out; but until someone exhibits a clear use-case for such behavior, it
      doesn't seem worth bothering.
      
      A very useful side-effect of this change is that SPI_freetuptable() can
      now defend itself against bad calls, such as duplicate free requests;
      this should make things more robust in many places.  (In particular,
      this reduces the risks involved if a third-party extension contains
      now-redundant SPI_freetuptable() calls in error cleanup code.)
      
      Even though the leakage problem is of long standing, it seems imprudent
      to back-patch this into stable branches, since it does represent an API
      semantics change for SPI users.  We'll patch this in 9.3, but live with
      the leakage in older branches.
      3d13623d
    • Robert Haas's avatar
      pgstattuple: Doc update for previous commit. · fd27b999
      Robert Haas authored
      In my previous change to make pgstattuple use SnapshotDirty rather
      than SnapshotNow, I failed to notice that the documenation also
      needed to be updated to match.  Fix.
      fd27b999
    • Robert Haas's avatar
      Change currtid functions to use an MVCC snapshot, not SnapshotNow. · ed93feb8
      Robert Haas authored
      This has a slight performance cost, but the only known consumers
      of these functions, known at the SQL level as currtid and currtid2,
      is pgsql-odbc; whose usage, we hope, is not sufficiently intensive
      to make this a problem.
      
      Per discussion.
      ed93feb8
    • Robert Haas's avatar
      pgstattuple: Use SnapshotDirty, not SnapshotNow. · 80c79ab2
      Robert Haas authored
      Tuples belonging to uncommitted transactions should not be
      counted as dead.
      
      This is arguably a bug fix that should be back-patched, but
      as no one ever noticed until it came time to try to get rid
      of SnapshotNow, I'm only doing this in master for now.
      80c79ab2
    • Robert Haas's avatar
      Don't use SnapshotNow in get_actual_variable_range. · 3483f433
      Robert Haas authored
      Instead, use the active snapshot.  Per Tom Lane, this function is
      most interested in knowing the range of tuples our scan will actually
      see.
      
      This is another step towards full removal of SnapshotNow.
      3483f433