1. 27 Sep, 2017 7 commits
    • Tom Lane's avatar
      Revert to 9.6 treatment of ALTER TYPE enumtype ADD VALUE. · 28e07270
      Tom Lane authored
      This reverts commit 15bc038f, along with the followon commits 1635e80d
      and 984c9207 that tried to clean up the problems exposed by bug #14825.
      The result was incomplete because it failed to address parallel-query
      requirements.  With 10.0 release so close upon us, now does not seem like
      the time to be adding more code to fix that.  I hope we can un-revert this
      code and add the missing parallel query support during the v11 cycle.
      
      Back-patch to v10.
      
      Discussion: https://postgr.es/m/20170922185904.1448.16585@wrigleys.postgresql.org
      28e07270
    • Peter Eisentraut's avatar
      Fix plperl build · 65c86562
      Peter Eisentraut authored
      The changes in 639928c9 turned out to
      require Perl 5.9.3, which is newer than our minimum required version.
      So revert back to the old code for the normal case and only use the new
      variant when both coverage and vpath are used.  As the minimum Perl
      version moves forward, we can drop the old code sometime.
      65c86562
    • Dean Rasheed's avatar
      Improve the CREATE POLICY documentation. · af44cbd5
      Dean Rasheed authored
      Provide a correct description of how multiple policies are combined,
      clarify when SELECT permissions are required, mention SELECT FOR
      UPDATE/SHARE, and do some other more minor tidying up.
      
      Reviewed by Stephen Frost
      
      Discussion: https://postgr.es/m/CAEZATCVrxyYbOFU8XbGHicz%2BmXPYzw%3DhfNL2XTphDt-53TomQQ%40mail.gmail.com
      
      Back-patch to 9.5.
      af44cbd5
    • Peter Eisentraut's avatar
      Improve vpath support in plperl build · 639928c9
      Peter Eisentraut authored
      Run xsubpp with the -output option instead of redirecting stdout.  That
      ensures that the #line directives in the output file point to the right
      place in a vpath build.  This in turn fixes an error in coverage builds
      that it can't find the source files.
      
      Refactor the makefile rules while we're here.
      Reviewed-by: default avatarMichael Paquier <michael.paquier@gmail.com>
      639928c9
    • Peter Eisentraut's avatar
      Get rid of parameterized marked sections in SGML · 684cf76b
      Peter Eisentraut authored
      Previously, we created a variant of the installation instructions for
      producing the plain-text INSTALL file by marking up certain parts of
      installation.sgml using SGML parameterized marked sections.  Marked
      sections will not work anymore in XML, so before we can convert the
      documentation to XML, we need a new approach.
      
      DocBook provides a "profiling" feature that allows selecting content
      based on attributes, which would work here.  But it imposes a noticeable
      overhead when building the full documentation and causes complications
      when building some output formats, and given that we recently spent a
      fair amount of effort optimizing the documentation build time, it seems
      sad to have to accept that.
      
      So as an alternative, (1) we create our own mini-profiling layer that
      adjusts just the text we want, and (2) assemble the pieces of content
      that we want in the INSTALL file using XInclude.  That way, there is no
      overhead when building the full documentation and most of the "ugly"
      stuff in installation.sgml can be removed and dealt with out of line.
      684cf76b
    • Peter Eisentraut's avatar
      pg_basebackup: Add option to create replication slot · 3709ca1c
      Peter Eisentraut authored
      When requesting a particular replication slot, the new pg_basebackup
      option -C/--create-slot creates it before starting to replicate from it.
      
      Further refactor the slot creation logic to include the temporary slot
      creation logic into the same function.  Add new arguments is_temporary
      and preserve_wal to CreateReplicationSlot().  Print in --verbose mode
      that a slot has been created.
      
      Author: Michael Banck <michael.banck@credativ.de>
      3709ca1c
    • Noah Misch's avatar
      Don't recommend "DROP SCHEMA information_schema CASCADE". · 59597e64
      Noah Misch authored
      It drops objects outside information_schema that depend on objects
      inside information_schema.  For example, it will drop a user-defined
      view if the view query refers to information_schema.
      
      Discussion: https://postgr.es/m/20170831025345.GE3963697@rfd.leadboat.com
      59597e64
  2. 26 Sep, 2017 10 commits
    • Peter Eisentraut's avatar
      Add some more pg_receivewal tests · fa414612
      Peter Eisentraut authored
      Add some more tests for the --create-slot and --drop-slot options,
      verifying that the right kind of slot was created and that the slot was
      dropped.  While working on an unrelated patch for pg_basebackup, some of
      this was temporarily broken without any tests noticing.
      fa414612
    • Peter Eisentraut's avatar
      Turn on log_replication_commands in PostgresNode · 43588f58
      Peter Eisentraut authored
      This is useful for example for the pg_basebackup and related tests.
      43588f58
    • Tom Lane's avatar
      Improve wording of error message added in commit 71480501. · 9a50a93c
      Tom Lane authored
      Per suggestions from Peter Eisentraut and David Johnston.
      Back-patch, like the previous commit.
      
      Discussion: https://postgr.es/m/E1dv9jI-0006oT-Fn@gemulon.postgresql.org
      9a50a93c
    • Tom Lane's avatar
      Fix failure-to-read-man-page in commit 899bd785. · 5ea96efa
      Tom Lane authored
      posix_fallocate() is not quite a drop-in replacement for fallocate(),
      because it is defined to return the error code as its function result,
      not in "errno".  I (tgl) missed this because RHEL6's version seems
      to set errno as well.  That is not the case on more modern Linuxen,
      though, as per buildfarm results.
      
      Aside from fixing the return-convention confusion, remove the test
      for ENOSYS; we expect that glibc will mask that for posix_fallocate,
      though it does not for fallocate.  Keep the test for EINTR, because
      POSIX specifies that as a possible result, and buildfarm results
      suggest that it can happen in practice.
      
      Back-patch to 9.4, like the previous commit.
      
      Thomas Munro
      
      Discussion: https://postgr.es/m/1002664500.12301802.1471008223422.JavaMail.yahoo@mail.yahoo.com
      5ea96efa
    • Tom Lane's avatar
      Remove heuristic same-transaction test from check_safe_enum_use(). · 984c9207
      Tom Lane authored
      The blacklist mechanism added by the preceding commit directly fixes
      most of the practical cases that the same-transaction test was meant
      to cover.  What remains is use-cases like
      
      	begin;
      	create type e as enum('x');
      	alter type e add value 'y';
      	-- use 'y' somehow
      	commit;
      
      However, because the same-transaction test is heuristic, it fails on
      small variants of that, such as renaming the type or changing its
      owner.  Rather than try to explain the behavior to users, let's
      remove it and just have a rule that the newly added value can't be
      used before being committed, full stop.  Perhaps later it will be
      worth the implementation effort and overhead to have a more accurate
      test for type-was-created-in-this-transaction.  We'll wait for some
      field experience with v10 before deciding to do that.
      
      Back-patch to v10.
      
      Discussion: https://postgr.es/m/20170922185904.1448.16585@wrigleys.postgresql.org
      984c9207
    • Tom Lane's avatar
      Use a blacklist to distinguish original from add-on enum values. · 1635e80d
      Tom Lane authored
      Commit 15bc038f allowed ALTER TYPE ADD VALUE to be executed inside
      transaction blocks, by disallowing the use of the added value later
      in the same transaction, except under limited circumstances.  However,
      the test for "limited circumstances" was heuristic and could reject
      references to enum values that were created during CREATE TYPE AS ENUM,
      not just later.  This breaks the use-case of restoring pg_dump scripts
      in a single transaction, as reported in bug #14825 from Balazs Szilfai.
      
      We can improve this by keeping a "blacklist" table of enum value OIDs
      created by ALTER TYPE ADD VALUE during the current transaction.  Any
      visible-but-uncommitted value whose OID is not in the blacklist must
      have been created by CREATE TYPE AS ENUM, and can be used safely
      because it could not have a lifespan shorter than its parent enum type.
      
      This change also removes the restriction that a renamed enum value
      can't be used before being committed (unless it was on the blacklist).
      
      Andrew Dunstan, with cosmetic improvements by me.
      Back-patch to v10.
      
      Discussion: https://postgr.es/m/20170922185904.1448.16585@wrigleys.postgresql.org
      1635e80d
    • Peter Eisentraut's avatar
      Sort pg_basebackup options better · 15a8010e
      Peter Eisentraut authored
      The --slot option somehow ended up under options controlling the output,
      and some other options were in a nonsensical place or were not moved
      after recent renamings, so tidy all that up a bit.
      15a8010e
    • Peter Eisentraut's avatar
      Handle heap rewrites better in logical replication · ab28feae
      Peter Eisentraut authored
      A FOR ALL TABLES publication naturally considers all base tables to be a
      candidate for replication.  This includes transient heaps that are
      created during a table rewrite during DDL.  This causes failures on the
      subscriber side because it will not have a table like pg_temp_16386 to
      receive data (and if it did, it would be the wrong table).
      
      The prevent this problem, we filter out any tables that match this
      naming pattern and match an actual table from FOR ALL TABLES
      publications.  This is only a heuristic, meaning that user tables that
      match that naming could accidentally be omitted.  A more robust solution
      might require an explicit marking of such tables in pg_class somehow.
      Reported-by: default avataryxq <yxq@o2.pl>
      Bug: #14785
      Reviewed-by: default avatarAndres Freund <andres@anarazel.de>
      Reviewed-by: default avatarPetr Jelinek <petr.jelinek@2ndquadrant.com>
      ab28feae
    • Robert Haas's avatar
      Remove lsn from HashScanPosData. · 22c5e735
      Robert Haas authored
      This was intended as infrastructure for weakening VACUUM's locking
      requirements, similar to what was done for btree indexes in commit
      2ed5b87f.  However, for hash indexes,
      it seems that the improvements which are possible are actually
      extremely marginal.  Furthermore, performing the LSN cross-check will
      end up skipping cleanup far more often than is necessary; we only care
      about page modifications due to a VACUUM, but the LSN check will fail
      if ANY modification has occurred.  So, rather than pressing forward
      with that "optimization", just rip the LSN field out.
      
      Patch by me, reviewed by Ashutosh Sharma and Amit Kapila
      
      Discussion: http://postgr.es/m/CAA4eK1JxqqcuC5Un7YLQVhOYSZBS+t=3xqZuEkt5RyquyuxpwQ@mail.gmail.com
      22c5e735
    • Robert Haas's avatar
      Fix trivial mistake in README. · 79a4a665
      Robert Haas authored
      You might think I (Robert) could manage to count to five without
      messing it up, but if you did, you would be wrong.
      
      Amit Kapila
      
      Discussion: http://postgr.es/m/CAA4eK1JxqqcuC5Un7YLQVhOYSZBS+t=3xqZuEkt5RyquyuxpwQ@mail.gmail.com
      79a4a665
  3. 25 Sep, 2017 3 commits
    • Tom Lane's avatar
      Avoid SIGBUS on Linux when a DSM memory request overruns tmpfs. · 899bd785
      Tom Lane authored
      On Linux, shared memory segments created with shm_open() are backed by
      swap files created in tmpfs.  If the swap file needs to be extended,
      but there's no tmpfs space left, you get a very unfriendly SIGBUS trap.
      To avoid this, force allocation of the full request size when we create
      the segment.  This adds a few cycles, but none that we wouldn't expend
      later anyway, assuming the request isn't hugely bigger than the actual
      need.
      
      Make this code #ifdef __linux__, because (a) there's not currently a
      reason to think the same problem exists on other platforms, and (b)
      applying posix_fallocate() to an FD created by shm_open() isn't very
      portable anyway.
      
      Back-patch to 9.4 where the DSM code came in.
      
      Thomas Munro, per a bug report from Amul Sul
      
      Discussion: https://postgr.es/m/1002664500.12301802.1471008223422.JavaMail.yahoo@mail.yahoo.com
      899bd785
    • Tom Lane's avatar
      Make construct_[md_]array return a valid empty array for zero-size input. · 716ea626
      Tom Lane authored
      If construct_array() or construct_md_array() were given a dimension of
      zero, they'd produce an array that contains no elements but has positive
      dimension.  This violates a general expectation that empty arrays should
      have ndims = 0; in particular, while arrays like this print as empty,
      they don't compare equal to other empty arrays.
      
      Up to now we've expected callers to avoid making such calls and instead
      be careful to call construct_empty_array() if there would be no elements.
      But this has always been an easily missed case, and we've repeatedly had to
      fix callers to do it right.  In bug #14826, Erwin Brandstetter pointed out
      yet another such oversight, in ts_lexize(); and a bit of examination of
      other call sites found at least two more with similar issues.  So let's
      fix the problem centrally and permanently by changing these two functions
      to construct a proper zero-D empty array whenever the array would be empty.
      
      This renders a few explicit calls of construct_empty_array() redundant,
      but the only such place I found that really seemed worth changing was in
      ExecEvalArrayExpr().
      
      Although this fixes some very old bugs, no back-patch: the problem is
      pretty minor and the risk of changing behavior seems to outweigh the
      benefit in stable branches.
      
      Discussion: https://postgr.es/m/20170923125723.1448.39412@wrigleys.postgresql.org
      Discussion: https://postgr.es/m/20570.1506198383@sss.pgh.pa.us
      716ea626
    • Andrew Dunstan's avatar
      Support building with Visual Studio 2017 · f2ab3898
      Andrew Dunstan authored
      Haribabu Kommi, reviewed by Takeshi Ideriha and Christian Ullrich
      
      Backpatch to 9.6
      f2ab3898
  4. 24 Sep, 2017 4 commits
    • Tom Lane's avatar
      Fix assorted infelicities in new SetWALSegSize() function. · 8485a25a
      Tom Lane authored
      * Failure to check for malloc failure (ok, pretty unlikely here, but
      that's not an excuse).
      
      * Leakage of open fd on read error, and of malloc'd buffer always.
      
      * Incorrect assumption that a short read would set errno to zero.
      
      * Failure to adhere to message style conventions (in particular,
      not reporting errno where relevant; using "couldn't open" rather than
      "could not open" is not really in line with project style either).
      
      * Missing newlines on some messages.
      
      Coverity spotted the leak problems; I noticed the rest while
      fixing the leaks.
      8485a25a
    • Peter Eisentraut's avatar
      Allow ICU to use SortSupport on Windows with UTF-8 · 6dda0998
      Peter Eisentraut authored
      There is no reason to ever prevent the use of SortSupport on Windows
      when ICU locales are used.  We previously avoided SortSupport on Windows
      with UTF-8 server encoding and a non C-locale due to restrictions in
      Windows' libc functionality.
      
      This is now considered to be a restriction in one platform's libc
      collation provider, and not a more general platform restriction.
      Reported-by: default avatarPeter Geoghegan <pg@bowt.ie>
      6dda0998
    • Peter Eisentraut's avatar
      doc: Expand user documentation on SCRAM · 9b31c72a
      Peter Eisentraut authored
      Explain more about how the different password authentication methods and
      the password_encryption settings relate to each other, give some
      upgrading advice, and set a better link from the release notes.
      Reviewed-by: default avatarJeff Janes <jeff.janes@gmail.com>
      9b31c72a
    • Peter Eisentraut's avatar
      Fix pg_basebackup test to original intent · 74ca8f9b
      Peter Eisentraut authored
      One test case was meant to check that pg_basebackup does not succeed
      when a slot is specified with -S but WAL streaming is not selected,
      which used to require specifying -X stream.  Since -X stream is the
      default in PostgreSQL 10, this test case no longer covers that meaning,
      but the pg_basebackup invocation happened to fail anyway for the
      unrelated reason that the specified replication slot does not exist.  To
      fix, move the test case to later in the file where the slot does exist,
      and add -X none to the invocation so that it covers the originally meant
      behavior.
      
      extracted from a patch by Michael Banck <michael.banck@credativ.de>
      74ca8f9b
  5. 23 Sep, 2017 7 commits
  6. 22 Sep, 2017 9 commits