1. 23 May, 2017 2 commits
  2. 22 May, 2017 1 commit
  3. 21 May, 2017 3 commits
    • Tom Lane's avatar
      Fix precision and rounding issues in money multiplication and division. · d761fe21
      Tom Lane authored
      The cash_div_intX functions applied rint() to the result of the division.
      That's not merely useless (because the result is already an integer) but
      it causes precision loss for values larger than 2^52 or so, because of
      the forced conversion to float8.
      
      On the other hand, the cash_mul_fltX functions neglected to apply rint() to
      their multiplication results, thus possibly causing off-by-one outputs.
      
      Per C standard, arithmetic between any integral value and a float value is
      performed in float format.  Thus, cash_mul_flt4 and cash_div_flt4 produced
      answers good to only about six digits, even when the float value is exact.
      We can improve matters noticeably by widening the float inputs to double.
      (It's tempting to consider using "long double" arithmetic if available,
      but that's probably too much of a stretch for a back-patched fix.)
      
      Also, document that cash_div_intX operators truncate rather than round.
      
      Per bug #14663 from Richard Pistole.  Back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/22403.1495223615@sss.pgh.pa.us
      d761fe21
    • Tom Lane's avatar
      Fix contrib/sepgsql regression tests for partition NOT NULL change. · 2dd510e6
      Tom Lane authored
      Commit 3ec76ff1 changed the partitioning logic to not install a forced
      NOT NULL constraint on range partitioning columns.  This affects the
      expected output for contrib/sepgsql, because there's no longer LOG
      entries reporting allowance of such a constraint.  Per buildfarm.
      2dd510e6
    • Tom Lane's avatar
      Change documentation references to PG website to use https: not http: · 7f77cbd9
      Tom Lane authored
      This is more secure, and saves a redirect since we no longer accept
      plain HTTP connections on the website.
      
      References in code comments should probably be updated too, but
      that doesn't seem to need back-patching, whereas this does.
      
      Also, in the 9.2 branch, remove suggestion that you can get the
      source code via FTP, since that service will be shut down soon.
      
      Daniel Gustafsson, with a few additional changes by me
      
      Discussion: https://postgr.es/m/9A2C89A7-0BB8-41A8-B288-8B7BD09D7D44@yesql.se
      7f77cbd9
  4. 19 May, 2017 13 commits
  5. 18 May, 2017 5 commits
  6. 17 May, 2017 12 commits
  7. 16 May, 2017 4 commits
    • Tom Lane's avatar
      Fix leakage of memory context header in find_all_inheritors(). · ddd24358
      Tom Lane authored
      Commit 827d6f97 contained the same misunderstanding of hash_create's API
      as commit 090010f2.  As in 5d00b764, remove the unnecessary layer of
      memory context.  (This bug is less significant than the other one, since
      the extra context would be under a relatively short-lived context, but
      it's still a bug.)
      ddd24358
    • Kevin Grittner's avatar
      a19ea9c6
    • Kevin Grittner's avatar
    • Tom Lane's avatar
      Try to ensure that stats collector's receive buffer size is at least 100KB. · 8b0b6303
      Tom Lane authored
      Since commit 4e37b3e1, buildfarm member frogmouth has been failing
      occasionally with symptoms indicating that some expected stats data is
      getting dropped.  The reason that that commit changed the behavior seems
      probably to be that more data is getting shoved at the collector in a short
      span of time.  In current sources, the stats test's first session sends
      about 9KB of data while exiting, which is probably the same as what was
      sent just before wait_for_stats() in the previous test design.  But now,
      the test's second session is starting up concurrently, and it sends another
      2KB (presumably reflecting its initial catalog accesses).  Since frogmouth
      is running on Windows XP, which reputedly has a default socket receive
      buffer size of only 8KB, it is not very surprising if this has put us over
      the threshold where the receive buffer can overflow and drop messages.
      
      The same mechanism could very easily explain the intermittent stats test
      failures we've been seeing for years, since background processes such
      as the bgwriter will sometimes send data concurrently with all this, and
      could thus cause occasional buffer overflows.
      
      Hence, insert some code into pgstat_init() to increase the stats socket's
      receive buffer size to 100KB if it's less than that.  (On failure, emit a
      LOG message, but keep going.)  Modern systems seem to have default sizes
      in the range of 100KB-250KB, but older platforms don't.  I couldn't find
      any platforms that wouldn't accept 100KB, so in theory this won't cause
      any portability problems.
      
      If this is successful at reducing the buildfarm failure rate in HEAD,
      we should back-patch it, because it's certain that similar buffer overflows
      happen in the field on platforms with small buffer sizes.  Going forward,
      there might be an argument for trying to increase the buffer size even
      more, but let's take a baby step first.
      
      Discussion: https://postgr.es/m/22173.1494788088@sss.pgh.pa.us
      8b0b6303