1. 12 May, 2017 12 commits
    • Tom Lane's avatar
      Avoid searching for the target catcache in CatalogCacheIdInvalidate. · 50ee1c74
      Tom Lane authored
      A test case provided by Mathieu Fenniak shows that the initial search for
      the target catcache in CatalogCacheIdInvalidate consumes a very significant
      amount of overhead in cases where cache invalidation is triggered but has
      little useful work to do.  There is no good reason for that search to exist
      at all, as the index array maintained by syscache.c allows direct lookup of
      the catcache from its ID.  We just need a frontend function in syscache.c,
      matching the division of labor for most other cache-accessing operations.
      
      While there's more that can be done in this area, this patch alone reduces
      the runtime of Mathieu's example by 2X.  We can hope that it offers some
      useful benefit in other cases too, although usually cache invalidation
      overhead is not such a striking fraction of the total runtime.
      
      Back-patch to 9.4 where logical decoding was introduced.  It might be
      worth going further back, but presently the only case we know of where
      cache invalidation is really a significant burden is in logical decoding.
      Also, older branches have fewer catcaches, reducing the possible benefit.
      
      (Note: although this nominally changes catcache's API, we have always
      documented CatalogCacheIdInvalidate as a private function, so I would
      have little sympathy for an external module calling it directly.  So
      backpatching should be fine.)
      
      Discussion: https://postgr.es/m/CAHoiPjzea6N0zuCi=+f9v_j94nfsy6y8SU7-=bp4=7qw6_i=Rg@mail.gmail.com
      50ee1c74
    • Tom Lane's avatar
      Fix dependencies for extended statistics objects. · 928c4de3
      Tom Lane authored
      A stats object ought to have a dependency on each individual column
      it reads, not the entire table.  Doing this honestly lets us get rid
      of the hard-wired logic in RemoveStatisticsExt, which seems to have
      been misguidedly modeled on RemoveStatistics; and it will be far easier
      to extend to multiple tables later.
      
      Also, add overlooked dependency on owner, and make the dependency on
      schema be NORMAL like every other such dependency.
      
      There remains some unfinished work here, which is to allow statistics
      objects to be extension members.  That takes more effort than just
      adding the dependency call, though, so I left it out for now.
      
      initdb forced because this changes the set of pg_depend records that
      should exist for a statistics object.
      
      Discussion: https://postgr.es/m/22676.1494557205@sss.pgh.pa.us
      928c4de3
    • Alvaro Herrera's avatar
      Change CREATE STATISTICS syntax · bc085205
      Alvaro Herrera authored
      Previously, we had the WITH clause in the middle of the command, where
      you'd specify both generic options as well as statistic types.  Few
      people liked this, so this commit changes it to remove the WITH keyword
      from that clause and makes it accept statistic types only.  (We
      currently don't have any generic options, but if we invent in the
      future, we will gain a new WITH clause, probably at the end of the
      command).
      
      Also, the column list is now specified without parens, which makes the
      whole command look more similar to a SELECT command.  This change will
      let us expand the command to supporting expressions (not just columns
      names) as well as multiple tables and their join conditions.
      
      Tom added lots of code comments and fixed some parts of the CREATE
      STATISTICS reference page, too; more changes in this area are
      forthcoming.  He also fixed a potential problem in the alter_generic
      regression test, reducing verbosity on a cascaded drop to avoid
      dependency on message ordering, as we do in other tests.
      
      Tom also closed a security bug: we documented that table ownership was
      required in order to create a statistics object on it, but didn't
      actually implement it.
      
      Implement tab-completion for statistics objects.  This can stand some
      more improvement.
      
      Authors: Alvaro Herrera, with lots of cleanup by Tom Lane
      Discussion: https://postgr.es/m/20170420212426.ltvgyhnefvhixm6i@alvherre.pgsql
      bc085205
    • Peter Eisentraut's avatar
    • Peter Eisentraut's avatar
      Standardize "WAL location" terminology · d496a657
      Peter Eisentraut authored
      Other previously used terms were "WAL position" or "log position".
      d496a657
    • Peter Eisentraut's avatar
      Replace "transaction log" with "write-ahead log" · c1a7f64b
      Peter Eisentraut authored
      This makes documentation and error messages match the renaming of "xlog"
      to "wal" in APIs and file naming.
      c1a7f64b
    • Andrew Dunstan's avatar
      Honor PROVE_FLAGS environment setting · 56b6ef89
      Andrew Dunstan authored
      On MSVC builds and on back branches that means removing the hardcoded
      --verbose setting. On master for Unix that means removing the empty
      setting in the global Makefile so that the value can be acquired from
      the environment as well as from the make arguments.
      
      Backpatch to 9.4 where we introduced TAP tests
      56b6ef89
    • Andrew Dunstan's avatar
      Add libxml2 include path for MSVC builds · b757e01f
      Andrew Dunstan authored
      On Unix this path is detected via the use of xml2-config, but that's not
      available on Windows. This means that users building with libxml2 will
      no longer need to move things around from the standard libxml2
      installation for MSVC builds.
      
      Backpatch to all live branches.
      b757e01f
    • Peter Eisentraut's avatar
      pg_dump: Add --no-publications option · 96e1cb4c
      Peter Eisentraut authored
      Author: Michael Paquier <michael.paquier@gmail.com>
      96e1cb4c
    • Peter Eisentraut's avatar
      Rework the options syntax for logical replication commands · b807f598
      Peter Eisentraut authored
      For CREATE/ALTER PUBLICATION/SUBSCRIPTION, use similar option style as
      other statements that use a WITH clause for options.
      
      Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
      b807f598
    • Andrew Dunstan's avatar
      Avoid tests which crash the calling process on Windows · 734cb4c2
      Andrew Dunstan authored
      Certain recovery tests use the Perl IPC::Run module's start/kill_kill
      method of processing. On at least some versions of perl this causes the
      whole process and its caller to crash. If we ever find a better way of
      doing these tests they can be re-enabled on this platform. This does not
      affect Mingw or Cygwin builds, which use a different perl and a
      different shell and so are not affected.
      734cb4c2
    • Simon Riggs's avatar
      Lag tracking for logical replication · 024711bb
      Simon Riggs authored
      Lag tracking is called for each commit, but we introduce
      a pacing delay to ensure we don't swamp the lag tracker.
      
      Author: Petr Jelinek, with minor pacing delay code from me
      024711bb
  2. 11 May, 2017 3 commits
  3. 10 May, 2017 11 commits
  4. 09 May, 2017 6 commits
  5. 08 May, 2017 8 commits
    • Tom Lane's avatar
      Further patch rangetypes_selfuncs.c's statistics slot management. · da075960
      Tom Lane authored
      Values in a STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM slot are float8,
      not of the type of the column the statistics are for.
      
      This bug is at least partly the fault of sloppy specification comments
      for get_attstatsslot()/free_attstatsslot(): the type OID they want is that
      of the stavalues entries, not of the underlying column.  (I double-checked
      other callers and they seem to get this right.)  Adjust the comments to be
      more correct.
      
      Per buildfarm.
      
      Security: CVE-2017-7484
      da075960
    • Peter Eisentraut's avatar
      Check connection info string in ALTER SUBSCRIPTION · fe974cc5
      Peter Eisentraut authored
      Previously it would allow an invalid connection string to be set.
      
      Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
      Reported-by: default avatartushar <tushar.ahuja@enterprisedb.com>
      fe974cc5
    • Tom Lane's avatar
      Last-minute updates for release notes. · c89d2d02
      Tom Lane authored
      Security: CVE-2017-7484, CVE-2017-7485, CVE-2017-7486
      c89d2d02
    • Peter Eisentraut's avatar
      Fix statistics reporting in logical replication workers · 9a591c1b
      Peter Eisentraut authored
      This new arrangement ensures that statistics are reported right after
      commit of transactions.  The previous arrangement didn't get this quite
      right and could lead to assertion failures.
      
      Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
      Reported-by: default avatarErik Rijkers <er@xs4all.nl>
      9a591c1b
    • Tom Lane's avatar
      Fix possibly-uninitialized variable. · b6576e59
      Tom Lane authored
      Oversight in e2d4ef8d et al (my fault not Peter's).  Per buildfarm.
      
      Security: CVE-2017-7484
      b6576e59
    • Noah Misch's avatar
      Match pg_user_mappings limits to information_schema.user_mapping_options. · 3eefc510
      Noah Misch authored
      Both views replace the umoptions field with NULL when the user does not
      meet qualifications to see it.  They used different qualifications, and
      pg_user_mappings documented qualifications did not match its implemented
      qualifications.  Make its documentation and implementation match those
      of user_mapping_options.  One might argue for stronger qualifications,
      but these have long, documented tenure.  pg_user_mappings has always
      exhibited this problem, so back-patch to 9.2 (all supported versions).
      
      Michael Paquier and Feike Steenbergen.  Reviewed by Jeff Janes.
      Reported by Andrew Wheelwright.
      
      Security: CVE-2017-7486
      3eefc510
    • Noah Misch's avatar
      Restore PGREQUIRESSL recognition in libpq. · 0170b10d
      Noah Misch authored
      Commit 65c3bf19 moved handling of the,
      already then, deprecated requiressl parameter into conninfo_storeval().
      The default PGREQUIRESSL environment variable was however lost in the
      change resulting in a potentially silent accept of a non-SSL connection
      even when set.  Its documentation remained.  Restore its implementation.
      Also amend the documentation to mark PGREQUIRESSL as deprecated for
      those not following the link to requiressl.  Back-patch to 9.3, where
      commit 65c3bf19 first appeared.
      
      Behavior has been more complex when the user provides both deprecated
      and non-deprecated settings.  Before commit 65c3bf19, libpq operated
      according to the first of these found:
      
        requiressl=1
        PGREQUIRESSL=1
        sslmode=*
        PGSSLMODE=*
      
      (Note requiressl=0 didn't override sslmode=*; it would only suppress
      PGREQUIRESSL=1 or a previous requiressl=1.  PGREQUIRESSL=0 had no effect
      whatsoever.)  Starting with commit 65c3bf19, libpq ignored PGREQUIRESSL,
      and order of precedence changed to this:
      
        last of requiressl=* or sslmode=*
        PGSSLMODE=*
      
      Starting now, adopt the following order of precedence:
      
        last of requiressl=* or sslmode=*
        PGSSLMODE=*
        PGREQUIRESSL=1
      
      This retains the 65c3bf19 behavior for connection strings that contain
      both requiressl=* and sslmode=*.  It retains the 65c3bf19 change that
      either connection string option overrides both environment variables.
      For the first time, PGSSLMODE has precedence over PGREQUIRESSL; this
      avoids reducing security of "PGREQUIRESSL=1 PGSSLMODE=verify-full"
      configurations originating under v9.3 and later.
      
      Daniel Gustafsson
      
      Security: CVE-2017-7485
      0170b10d
    • Bruce Momjian's avatar
      doc: add Simon Riggs to VACUUM VERBOSE PG 10 release note item · 74cadeaa
      Bruce Momjian authored
      Reported-by: Masahiko Sawada
      74cadeaa