1. 24 May, 2017 4 commits
    • Peter Eisentraut's avatar
      Fix table syncing with different column order · 073ce405
      Peter Eisentraut authored
      Logical replication supports replicating between tables with different
      column order.  But this failed for the initial table sync because of a
      logic error in how the column list for the internal COPY command was
      composed.  Fix that and also add a test.
      
      Also fix a minor omission in the column name mapping cache.  When
      creating the mapping list, it would not skip locally dropped columns.
      So if a remote column had the same name as a locally dropped
      column (...pg.dropped...), then the expected error would not occur.
      073ce405
    • Peter Eisentraut's avatar
      Improve logical replication worker log messages · 92ecb148
      Peter Eisentraut authored
      Reduce some redundant messages to DEBUG1.  Be clearer about the
      distinction between apply workers and table synchronization workers.
      Add subscription and table name where possible.
      Reviewed-by: default avatarMasahiko Sawada <sawada.mshk@gmail.com>
      92ecb148
    • Robert Haas's avatar
      Code review of get_qual_for_list. · 85c2b9a1
      Robert Haas authored
      We need not consider the case where both nulltest1 and nulltest2 are
      NULL; the partition either accepts nulls or it does not.
      
      Jeevan Ladhe.  I added an assertion.
      85c2b9a1
    • Tom Lane's avatar
      Tighten checks for whitespace in functions that parse identifiers etc. · 9ae2661f
      Tom Lane authored
      This patch replaces isspace() calls with scanner_isspace() in functions
      that are likely to be presented with non-ASCII input.  isspace() has
      the small advantage that it will correctly recognize no-break space
      in single-byte encodings (such as LATIN1); but it cannot work successfully
      for any multibyte character, and depending on platform it might return
      false positive results for some fragments of multibyte characters.  That's
      disastrous for functions that are trying to discard whitespace between
      valid strings, as noted in bug #14662 from Justin Muise.  Even treating
      no-break space as whitespace is pretty questionable for the usages touched
      here, because the core scanner would think it is an identifier character.
      
      Affected functions are parse_ident(), parseNameAndArgTypes (underlying
      regprocedurein() and siblings), SplitIdentifierString (used for parsing
      GUCs and options that are qualified names or lists of names), and
      SplitDirectoriesString (used for parsing GUCs that are lists of
      directories).
      
      All the functions adjusted here are parsing SQL identifiers and similar
      constructs, so it's reasonable to insist that their definition of
      whitespace match the core scanner.  So we can hope that this won't cause
      many backwards-compatibility problems.  I've left alone isspace() calls
      in places that aren't really expecting any non-ASCII input characters,
      such as float8in().
      
      Back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/10129.1495302480@sss.pgh.pa.us
      9ae2661f
  2. 23 May, 2017 3 commits
  3. 22 May, 2017 1 commit
  4. 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
  5. 19 May, 2017 13 commits
  6. 18 May, 2017 5 commits
  7. 17 May, 2017 11 commits