1. 21 May, 2012 4 commits
  2. 19 May, 2012 5 commits
  3. 18 May, 2012 2 commits
    • Peter Eisentraut's avatar
    • Heikki Linnakangas's avatar
      Fix bug in gistRelocateBuildBuffersOnSplit(). · 1d27dcf5
      Heikki Linnakangas authored
      When we create a temporary copy of the old node buffer, in stack, we mustn't
      leak that into any of the long-lived data structures. Before this patch,
      when we called gistPopItupFromNodeBuffer(), it got added to the array of
      "loaded buffers". After gistRelocateBuildBuffersOnSplit() exits, the
      pointer added to the loaded buffers array points to garbage. Often that goes
      unnotied, because when we go through the array of loaded buffers to unload
      them, buffers with a NULL pageBuffer are ignored, which can often happen by
      accident even if the pointer points to garbage.
      
      This patch fixes that by marking the temporary copy in stack explicitly as
      temporary, and refrain from adding buffers marked as temporary to the array
      of loaded buffers.
      
      While we're at it, initialize nodeBuffer->pageBlocknum to InvalidBlockNumber
      and improve comments a bit. This isn't strictly necessary, but makes
      debugging easier.
      1d27dcf5
  4. 17 May, 2012 3 commits
  5. 16 May, 2012 3 commits
  6. 15 May, 2012 8 commits
  7. 14 May, 2012 10 commits
    • Tom Lane's avatar
      Assert that WaitLatchOrSocket callers cannot wait only for writability. · e42a21b9
      Tom Lane authored
      Since we have chosen to report socket EOF and error conditions via the
      WL_SOCKET_READABLE flag bit, it's unsafe to wait only for
      WL_SOCKET_WRITEABLE; the caller would never be notified of the socket
      condition, and in some of these implementations WaitLatchOrSocket would
      busy-wait until something else happens.  Add this restriction to the API
      specification, and add Asserts to check that callers don't try to do that.
      
      At some point we might want to consider adjusting the API to relax this
      restriction, but until we have an actual use case for waiting on a
      write-only socket, it seems premature to design a solution.
      e42a21b9
    • Peter Eisentraut's avatar
      Remove unused AC_DEFINE symbols · ff4628f3
      Peter Eisentraut authored
      ENABLE_DTRACE            unused as of a7b7b07a
      HAVE_ERR_SET_MARK        unused as of 4ed4b6c5
      HAVE_FCVT                unused as of 4553e1d8
      HAVE_STRUCT_SOCKADDR_UN  unused as of b4cea00a
      HAVE_SYSCONF             unused as of f83356c7
      TM_IN_SYS_TIME           never used, obsolescent per Autoconf documentation
      ff4628f3
    • Tom Lane's avatar
      For testing purposes, reinsert a timeout in pgstat.c's wait call. · d461d050
      Tom Lane authored
      Test results from buildfarm members mastodon/narwhal (Windows Server 2003)
      make it look like that platform just plain loses FD_READ events
      occasionally, and the only reason our previous coding seemed to work was
      that it timed out every couple of seconds and retried the whole operation.
      Try to verify this by reinserting a finite timeout into the pgstat loop.
      This isn't meant to be a permanent patch either, just to confirm or
      disprove a theory.
      d461d050
    • Tom Lane's avatar
      Force pgwin32_recv into nonblock mode when called from pgstat.c. · f1ca5154
      Tom Lane authored
      This should get rid of the usage of pgwin32_waitforsinglesocket entirely,
      and perhaps thereby remove the race condition that's evidently still
      present on some versions of Windows.  The previous arrangement was a bit
      unsafe anyway, since waiting at the recv() would not allow pgstat to notice
      postmaster death.
      f1ca5154
    • Heikki Linnakangas's avatar
      Remove unnecessary pg_verifymbstr() calls from tsvector/query in functions. · f15c2eae
      Heikki Linnakangas authored
      The input should've been validated well before it hits the input function.
      Doing so again is a waste of cycles.
      f15c2eae
    • Heikki Linnakangas's avatar
      Update comments that became out-of-date with the PGXACT struct. · 9e4637bf
      Heikki Linnakangas authored
      When the "hot" members of PGPROC were split off to separate PGXACT structs,
      many PGPROC fields referred to in comments were moved to PGXACT, but the
      comments were neglected in the commit. Mostly this is just a search/replace
      of PGPROC with PGXACT, but the way the dummy PGPROC entries are created for
      prepared transactions changed more, making some of the comments totally
      bogus.
      
      Noah Misch
      9e4637bf
    • Peter Eisentraut's avatar
      Remove leftovers of BeOS port · 64f09ca3
      Peter Eisentraut authored
      These should have been removed when the BeOS port was removed in
      44f90212.
      64f09ca3
    • Peter Eisentraut's avatar
      6bf1e766
    • Peter Eisentraut's avatar
      pg_ctl: Improve --help output · 2a7f6366
      Peter Eisentraut authored
      All other --help output has = signs between long options and their
      arguments, so do it here as well.
      2a7f6366
    • Tom Lane's avatar
      Add some temporary instrumentation to pgstat.c. · 7d88bb73
      Tom Lane authored
      Log main-loop blocking events and the results of inquiry messages.
      This is to get some clarity as to what's happening on those Windows
      buildfarm members that still don't like the latch-ified stats collector.
      This bulks up the postmaster log a tad, so I won't leave it in place for
      long.
      7d88bb73
  8. 13 May, 2012 4 commits
    • Tom Lane's avatar
      Fix DROP TABLESPACE to unlink symlink when directory is not there. · b8347138
      Tom Lane authored
      If the tablespace directory is missing entirely, we allow DROP TABLESPACE
      to go through, on the grounds that it should be possible to clean up the
      catalog entry in such a situation.  However, we forgot that the pg_tblspc
      symlink might still be there.  We should try to remove the symlink too
      (but not fail if it's no longer there), since not doing so can lead to
      weird behavior subsequently, as per report from Michael Nolan.
      
      There was some discussion of adding dependency links to prevent DROP
      TABLESPACE when the catalogs still contain references to the tablespace.
      That might be worth doing too, but it's an orthogonal question, and in
      any case wouldn't be back-patchable.
      
      Back-patch to 9.0, which is as far back as the logic looks like this.
      We could possibly do something similar in 8.x, but given the lack of
      reports I'm not sure it's worth the trouble, and anyway the case could
      not arise in the form the logic is meant to cover (namely, a post-DROP
      transaction rollback having resurrected the pg_tablespace entry after
      some or all of the filesystem infrastructure is gone).
      b8347138
    • Tom Lane's avatar
      Re-revert stats collector latch changes. · 966970ed
      Tom Lane authored
      This reverts commit cb2f2873, restoring
      the latch-ified stats collector logic.  We'll soon see if this works any
      better on the Windows buildfarm machines.
      966970ed
    • Tom Lane's avatar
      Attempt to fix some issues in our Windows socket code. · b85427f2
      Tom Lane authored
      Make sure WaitLatchOrSocket regards FD_CLOSE as a read-ready condition.
      We might want to tweak this further, but it was surely wrong as-is.
      
      Make pgwin32_waitforsinglesocket detach its private event object from the
      passed socket before returning.  I suspect that failure to do so leads
      to race conditions when other code (such as WaitLatchOrSocket) attaches
      a different event object to the same socket.  Moreover, the existing
      coding meant that repeated calls to pgwin32_waitforsinglesocket would
      perform ResetEvent on an event actively connected to a socket, which
      is rumored to be an unsafe practice; the WSAEventSelect documentation
      appears to recommend against this, though it does not say not to do it
      in so many words.
      
      Also, uniformly use the coding pattern "WSAEventSelect(s, NULL, 0)" to
      detach events from sockets, rather than passing the event in the second
      parameter.  The WSAEventSelect documentation says that the second parameter
      is ignored if the third is 0, so theoretically this should make no
      difference.  However, elsewhere on the same reference page the use of NULL
      in this context is recommended, and I have found suggestions on the net
      that some versions of Windows have bugs with a non-NULL second parameter
      in this usage.
      
      Some other mostly-cosmetic cleanup, such as using the right one of
      WSAGetLastError and GetLastError for reporting errors from these functions.
      b85427f2
    • Tom Lane's avatar
      Fix bogus declaration of local variable. · fd350ef3
      Tom Lane authored
      rc should be an int here, not a pgsocket.  Fairly harmless as long as
      pgsocket is an integer type, but nonetheless wrong.  Error introduced
      in commit 87091cb1.
      fd350ef3
  9. 12 May, 2012 1 commit
    • Tom Lane's avatar
      Avoid unnecessary process wakeups in the log collector. · 398b2401
      Tom Lane authored
      syslogger was coded to wake up once per second whether there was anything
      useful to do or not.  As part of our campaign to reduce the server's idle
      power consumption, change it to use a latch for waiting.  Now, in the
      absence of any data to log or any signals to service, it will only wake up
      at the programmed logfile rotation times (if any).
      398b2401