1. 08 Apr, 2016 15 commits
    • Andrew Dunstan's avatar
      Turn down MSVC compiler verbosity · 01a07e6c
      Andrew Dunstan authored
      Most of what is produced by the detailed verbosity level is of no
      interest at all, so switch to the normal level for more usable output.
      
      Christian Ullrich
      
      Backpatch to all live branches
      01a07e6c
    • Peter Eisentraut's avatar
      Fix printf format · 8b737f90
      Peter Eisentraut authored
      8b737f90
    • Tom Lane's avatar
      Fix multiple bugs in tablespace symlink removal. · 93c301fc
      Tom Lane authored
      Don't try to examine S_ISLNK(st.st_mode) after a failed lstat().
      It's undefined.
      
      Also, if the lstat() reported ENOENT, we do not wish that to be a hard
      error, but the code might nonetheless treat it as one (giving an entirely
      misleading error message, too) depending on luck-of-the-draw as to what
      S_ISLNK() returned.
      
      Don't throw error for ENOENT from rmdir(), either.  (We're not really
      expecting ENOENT because we just stat'd the file successfully; but
      if we're going to allow ENOENT in the symlink code path, surely the
      directory code path should too.)
      
      Generate an appropriate errcode for its-the-wrong-type-of-file complaints.
      (ERRCODE_SYSTEM_ERROR doesn't seem appropriate, and failing to write
      errcode() around it certainly doesn't work, and not writing an errcode
      at all is not per project policy.)
      
      Valgrind noticed the undefined S_ISLNK result; the other problems emerged
      while reading the code in the area.
      
      All of this appears to have been introduced in 8f15f74a.
      Back-patch to 9.5 where that commit appeared.
      93c301fc
    • Robert Haas's avatar
      Document which aggregates support partial mode. · 752b948d
      Robert Haas authored
      David Rowley, reviewed by Tomas Vondra
      752b948d
    • Teodor Sigaev's avatar
      Enhanced custom error in PLPythonu · 5c3c3cd0
      Teodor Sigaev authored
      Patch adds a new, more rich,  way to emit error message or exception from
      PL/Pythonu code.
      
      Author: Pavel Stehule
      Reviewers: Catalin Iacob, Peter Eisentraut, Jim Nasby
      5c3c3cd0
    • Andres Freund's avatar
      Increase maximum number of clog buffers. · 5364b357
      Andres Freund authored
      Benchmarking has shown that the current number of clog buffers limits
      scalability. We've previously increased the number in 33aaa139, but
      that's not sufficient with a large number of clients.
      
      We've benchmarked the cost of increasing the limit by benchmarking worst
      case scenarios; testing showed that 128 buffers don't cause a
      regression, even in contrived scenarios, whereas 256 does
      
      There are a number of more complex patches flying around to address
      various clog scalability problems, but this is simple enough that we can
      get it into 9.6; and is beneficial even after those patches have been
      applied.
      
      It is a bit unsatisfactory to increase this in small steps every few
      releases, but a better solution seems to require a rewrite of slru.c;
      not something done quickly.
      
      Author: Amit Kapila and Andres Freund
      Discussion: CAA4eK1+-=18HOrdqtLXqOMwZDbC_15WTyHiFruz7BvVArZPaAw@mail.gmail.com
      5364b357
    • Robert Haas's avatar
      Add a 'parallel_degree' reloption. · 25fe8b5f
      Robert Haas authored
      The code that estimates what parallel degree should be uesd for the
      scan of a relation is currently rather stupid, so add a parallel_degree
      reloption that can be used to override the planner's rather limited
      judgement.
      
      Julien Rouhaud, reviewed by David Rowley, James Sewell, Amit Kapila,
      and me.  Some further hacking by me.
      25fe8b5f
    • Robert Haas's avatar
      Attempt to fix breakage due to declaration following code. · b0b64f65
      Robert Haas authored
      Per Tom Lane and the buildfarm.
      b0b64f65
    • Peter Eisentraut's avatar
      Set PAM_RHOST item for PAM authentication · 2f1d2b7a
      Peter Eisentraut authored
      The PAM_RHOST item is set to the remote IP address or host name and can
      be used by PAM modules.  A pg_hba.conf option is provided to choose
      between IP address and resolved host name.
      
      From: Grzegorz Sampolski <grzsmp@gmail.com>
      Reviewed-by: default avatarHaribabu Kommi <kommi.haribabu@gmail.com>
      2f1d2b7a
    • Teodor Sigaev's avatar
      Rename comparePos() to compareWordEntryPos() · 4e55b3f0
      Teodor Sigaev authored
      Rename comparePos() to compareWordEntryPos() to prevent export of too
      generic name.
      
      Per gripe from Tom Lane.
      4e55b3f0
    • Fujii Masao's avatar
      Add regression tests for multiple synchronous standbys. · 196b72fb
      Fujii Masao authored
      Authors: Suraj Kharage, Michael Paquier, Masahiko Sawada, refactored by me
      Reviewed-By: Kyotaro Horiguchi
      196b72fb
    • Robert Haas's avatar
      Use quicksort, not replacement selection, for external sorting. · 07118037
      Robert Haas authored
      We still use replacement selection for the first run of the sort only
      and only when the number of tuples is relatively small.  Otherwise,
      the first run, and subsequent runs in all cases, are produced using
      quicksort.  This tends to be faster except perhaps for very small
      amounts of working memory.
      
      Peter Geoghegan, reviewed by Tomas Vondra, Jeff Janes, Mithun Cy,
      Greg Stark, and me.
      07118037
    • Robert Haas's avatar
      Extend relations multiple blocks at a time to improve scalability. · 719c84c1
      Robert Haas authored
      Contention on the relation extension lock can become quite fierce when
      multiple processes are inserting data into the same relation at the same
      time at a high rate.  Experimentation shows the extending the relation
      multiple blocks at a time improves scalability.
      
      Dilip Kumar, reviewed by Petr Jelinek, Amit Kapila, and me.
      719c84c1
    • Fujii Masao's avatar
      8643b91e
    • Simon Riggs's avatar
      Use Foreign Key relationships to infer multi-column join selectivity · 137805f8
      Simon Riggs authored
      In cases where joins use multiple columns we currently assess each join
      separately causing gross mis-estimates for join cardinality.
      
      This patch adds use of FK information for the first time into the
      planner. When FKs are present and we have multi-column join information,
      plan estimates will be drastically improved. Cases with multiple FKs
      are handled, though partial matches are ignored currently.
      
      Net effect is substantial performance improvements for joins in many
      common cases. Additional planning time is isolated to cases that are
      currently performing poorly, measured at 0.08 - 0.15 ms.
      
      Please watch for planner performance regressions; circumstances seem
      unlikely but the law of unintended consequences may apply somewhen.
      Additional complex tests welcome to prove this before release.
      
      Tests can be performed using SET enable_fkey_estimates = on | off
      using scripts provided during Hackers discussions, message id:
      552335D9.3090707@2ndquadrant.com
      
      Authors: Tomas Vondra and David Rowley
      Reviewed and tested by Simon Riggs, adding comments only
      137805f8
  2. 07 Apr, 2016 15 commits
    • Stephen Frost's avatar
      GRANT rights to CURRENT_USER instead of adding roles · 6928484b
      Stephen Frost authored
      We shouldn't be adding roles during the regression tests as that can
      cause back-to-back installcheck runs to fail and users running the
      regression tests likley don't want those extra roles.
      
      Pointed out by Tom
      6928484b
    • Teodor Sigaev's avatar
      Zeroing unused parts ducring tsquery construction. · 33084679
      Teodor Sigaev authored
      Per investigation failure skink buildfarm member and
      RANDOMIZE_ALLOCATED_MEMORY help
      33084679
    • Tom Lane's avatar
      Refactor join_is_removable() to separate out distinctness-proving logic. · f338dd75
      Tom Lane authored
      Extracted from pending unique-join patch, since this is a rather large
      delta but it's simply moving code out into separately-accessible
      subroutines.
      
      I (tgl) did choose to add a bit more logic to rel_supports_distinctness,
      so that it verifies that there's at least one potentially usable unique
      index rather than just checking indexlist != NIL.  Otherwise there's
      no functional change here.
      
      David Rowley
      f338dd75
    • Teodor Sigaev's avatar
      Make testing of phraseto_tsquery independ from value of · a7ace3b6
      Teodor Sigaev authored
      default_text_search_config variable.
      
      Per skink buldfarm member
      a7ace3b6
    • Kevin Grittner's avatar
      Detect SSI conflicts before reporting constraint violations · fcff8a57
      Kevin Grittner authored
      While prior to this patch the user-visible effect on the database
      of any set of successfully committed serializable transactions was
      always consistent with some one-at-a-time order of execution of
      those transactions, the presence of declarative constraints could
      allow errors to occur which were not possible in any such ordering,
      and developers had no good workarounds to prevent user-facing
      errors where they were not necessary or desired.  This patch adds
      a check for serialization failure ahead of duplicate key checking
      so that if a developer explicitly (redundantly) checks for the
      pre-existing value they will get the desired serialization failure
      where the problem is caused by a concurrent serializable
      transaction; otherwise they will get a duplicate key error.
      
      While it would be better if the reads performed by the constraints
      could count as part of the work of the transaction for
      serialization failure checking, and we will hopefully get there
      some day, this patch allows a clean and reliable way for developers
      to work around the issue.  In many cases existing code will already
      be doing the right thing for this to "just work".
      
      Author: Thomas Munro, with minor editing of docs by me
      Reviewed-by: Marko Tiikkaja, Kevin Grittner
      fcff8a57
    • Teodor Sigaev's avatar
      Phrase full text search. · bb140506
      Teodor Sigaev authored
      Patch introduces new text search operator (<-> or <DISTANCE>) into tsquery.
      On-disk and binary in/out format of tsquery are backward compatible.
      It has two side effect:
      - change order for tsquery, so, users, who has a btree index over tsquery,
        should reindex it
      - less number of parenthesis in tsquery output, and tsquery becomes more
        readable
      
      Authors: Teodor Sigaev, Oleg Bartunov, Dmitry Ivanov
      Reviewers: Alexander Korotkov, Artur Zakirov
      bb140506
    • Simon Riggs's avatar
      Load FK defs into relcache for use by planner · 015e8894
      Simon Riggs authored
      Fastpath ignores this if no triggers defined.
      
      Author: Tomas Vondra, with fastpath and comments added by me
      Reviewers: David Rowley, Simon Riggs
      015e8894
    • Noah Misch's avatar
      Standardize GetTokenInformation() error reporting. · f2b1b307
      Noah Misch authored
      Commit c22650cd sparked a discussion
      about diverse interpretations of "token user" in error messages.  Expel
      old and new specimens of that phrase by making all GetTokenInformation()
      callers report errors the way GetTokenUser() has been reporting them.
      These error conditions almost can't happen, so users are unlikely to
      observe this change.
      
      Reviewed by Tom Lane and Stephen Frost.
      f2b1b307
    • Noah Misch's avatar
      Remove redundant message in AddUserToTokenDacl(). · 33d3fc5e
      Noah Misch authored
      GetTokenUser() will have reported an adequate error message.  These
      error conditions almost can't happen, so users are unlikely to observe
      this change.
      
      Reviewed by Tom Lane and Stephen Frost.
      33d3fc5e
    • Stephen Frost's avatar
      Bump catversion for pg_dump dump catalog ACL patches · 29dd1504
      Stephen Frost authored
      Pointed out by Tom.
      29dd1504
    • Stephen Frost's avatar
      Use GRANT system to manage access to sensitive functions · 1574783b
      Stephen Frost authored
      Now that pg_dump will properly dump out any ACL changes made to
      functions which exist in pg_catalog, switch to using the GRANT system
      to manage access to those functions.
      
      This means removing 'if (!superuser()) ereport()' checks from the
      functions themselves and then REVOKEing EXECUTE right from 'public' for
      these functions in system_views.sql.
      
      Reviews by Alexander Korotkov, Jose Luis Tallon
      1574783b
    • Stephen Frost's avatar
      In pg_dump, include pg_catalog and extension ACLs, if changed · 23f34fa4
      Stephen Frost authored
      Now that all of the infrastructure exists, add in the ability to
      dump out the ACLs of the objects inside of pg_catalog or the ACLs
      for objects which are members of extensions, but only if they have
      been changed from their original values.
      
      The original values are tracked in pg_init_privs.  When pg_dump'ing
      9.6-and-above databases, we will dump out the ACLs for all objects
      in pg_catalog and the ACLs for all extension members, where the ACL
      has been changed from the original value which was set during either
      initdb or CREATE EXTENSION.
      
      This should not change dumps against pre-9.6 databases.
      
      Reviews by Alexander Korotkov, Jose Luis Tallon
      23f34fa4
    • Stephen Frost's avatar
      In pg_dump, split "dump" into "dump" and "dump_contains" · d217b2c3
      Stephen Frost authored
      Historically, the "dump" component of the namespace has been used
      to decide if the objects inside of the namespace should be dumped
      also.  Given that "dump" is now a bitmask and may be partial, and
      we may want to dump out all components of the namespace object but
      only some of the components of objects contained in the namespace,
      create a "dump_contains" bitmask which will represent what components
      of the objects inside of a namespace should be dumped out.
      
      No behavior change here, but in preparation for a change where we
      will dump out just the ACLs of objects in pg_catalog, but we might
      not dump out the ACL of the pg_catalog namespace itself (for instance,
      when it hasn't been changed from the value set at initdb time).
      
      Reviews by Alexander Korotkov, Jose Luis Tallon
      d217b2c3
    • Stephen Frost's avatar
      In pg_dump, use a bitmap to represent what to include · a9f0e8e5
      Stephen Frost authored
      pg_dump has historically used a simple boolean 'dump' value to indicate
      if a given object should be included in the dump or not.  Instead, use
      a bitmap which breaks down the components of an object into their
      distinct pieces and use that bitmap to only include the components
      requested.
      
      This does not include any behavioral change, but is in preperation for
      the change to dump out just ACLs for objects in pg_catalog.
      
      Reviews by Alexander Korotkov, Jose Luis Tallon
      a9f0e8e5
    • Stephen Frost's avatar
      Add new catalog called pg_init_privs · 6c268df1
      Stephen Frost authored
      This new catalog holds the privileges which the system was
      initialized with at initdb time, along with any permissions set
      by extensions at CREATE EXTENSION time.  This allows pg_dump
      (and any other similar use-cases) to detect when the privileges
      set on initdb-created or extension-created objects have been
      changed from what they were set to at initdb/extension-creation
      time and handle those changes appropriately.
      
      Reviews by Alexander Korotkov, Jose Luis Tallon
      6c268df1
  3. 06 Apr, 2016 8 commits
    • Teodor Sigaev's avatar
      Add jsonb_insert · 0b62fd03
      Teodor Sigaev authored
      It inserts a new value into an jsonb array at arbitrary position or
      a new key to jsonb object.
      
      Author: Dmitry Dolgov
      Reviewers: Petr Jelinek, Vitaly Burovoy, Andrew Dunstan
      0b62fd03
    • Peter Eisentraut's avatar
      pg_dump: Add table qualifications to some tags · 3b3fcc4e
      Peter Eisentraut authored
      Some object types have names that are only unique for one table.  But
      for those we generally didn't put the table name into the dump TOC tag.
      So it was impossible to identify these objects if the same name was used
      for multiple tables.  This affects policies, column defaults,
      constraints, triggers, and rules.
      
      Fix by adding the table name to the TOC tag, so that it now reads
      "$schema $table $object".
      Reviewed-by: default avatarMichael Paquier <michael.paquier@gmail.com>
      3b3fcc4e
    • Tom Lane's avatar
      Run pgindent on a batch of (mostly-planner-related) source files. · de94e2af
      Tom Lane authored
      Getting annoyed at the amount of unrelated chatter I get from pgindent'ing
      Rowley's unique-joins patch.  Re-indent all the files it touches.
      de94e2af
    • Simon Riggs's avatar
      d25379eb
    • Fujii Masao's avatar
      Use proper format specifier %X/%X for LSN, again. · ead9963c
      Fujii Masao authored
      Commit cee31f5f fixed this problem, but commit 989be081 accidentally
      reverted the fix.
      
      Thomas Munro
      ead9963c
    • Simon Riggs's avatar
      Revert bf08f229 · cac0e366
      Simon Riggs authored
      Remove recent changes to logging XLOG_RUNNING_XACTS by request.
      cac0e366
    • Simon Riggs's avatar
      Generic Messages for Logical Decoding · 3fe3511d
      Simon Riggs authored
      API and mechanism to allow generic messages to be inserted into WAL that are
      intended to be read by logical decoding plugins. This commit adds an optional
      new callback to the logical decoding API.
      
      Messages are either text or bytea. Messages can be transactional, or not, and
      are identified by a prefix to allow multiple concurrent decoding plugins.
      
      (Not to be confused with Generic WAL records, which are intended to allow crash
      recovery of extensible objects.)
      
      Author: Petr Jelinek and Andres Freund
      Reviewers: Artur Zakirov, Tomas Vondra, Simon Riggs
      Discussion: 5685F999.6010202@2ndquadrant.com
      3fe3511d
    • Fujii Masao's avatar
      Support multiple synchronous standby servers. · 989be081
      Fujii Masao authored
      Previously synchronous replication offered only the ability to confirm
      that all changes made by a transaction had been transferred to at most
      one synchronous standby server.
      
      This commit extends synchronous replication so that it supports multiple
      synchronous standby servers. It enables users to consider one or more
      standby servers as synchronous, and increase the level of transaction
      durability by ensuring that transaction commits wait for replies from
      all of those synchronous standbys.
      
      Multiple synchronous standby servers are configured in
      synchronous_standby_names which is extended to support new syntax of
      'num_sync ( standby_name [ , ... ] )', where num_sync specifies
      the number of synchronous standbys that transaction commits need to
      wait for replies from and standby_name is the name of a standby
      server.
      
      The syntax of 'standby_name [ , ... ]' which was used in 9.5 or before
      is also still supported. It's the same as new syntax with num_sync=1.
      
      This commit doesn't include "quorum commit" feature which was discussed
      in pgsql-hackers. Synchronous standbys are chosen based on their priorities.
      synchronous_standby_names determines the priority of each standby for
      being chosen as a synchronous standby. The standbys whose names appear
      earlier in the list are given higher priority and will be considered as
      synchronous. Other standby servers appearing later in this list
      represent potential synchronous standbys.
      
      The regression test for multiple synchronous standbys is not included
      in this commit. It should come later.
      
      Authors: Sawada Masahiko, Beena Emerson, Michael Paquier, Fujii Masao
      Reviewed-By: Kyotaro Horiguchi, Amit Kapila, Robert Haas, Simon Riggs,
      Amit Langote, Thomas Munro, Sameer Thakur, Suraj Kharage, Abhijit Menon-Sen,
      Rajeev Rastogi
      
      Many thanks to the various individuals who were involved in
      discussing and developing this feature.
      989be081
  4. 05 Apr, 2016 2 commits
    • Alvaro Herrera's avatar
      Fix broken ALTER INDEX documentation · 2143f5e1
      Alvaro Herrera authored
      Commit b8a91d9d put the description of the new IF EXISTS clause in the
      wrong place -- move it where it belongs.
      
      Backpatch to 9.2.
      2143f5e1
    • Alvaro Herrera's avatar
      Support ALTER THING .. DEPENDS ON EXTENSION · f2fcad27
      Alvaro Herrera authored
      This introduces a new dependency type which marks an object as depending
      on an extension, such that if the extension is dropped, the object
      automatically goes away; and also, if the database is dumped, the object
      is included in the dump output.  Currently the grammar supports this for
      indexes, triggers, materialized views and functions only, although the
      utility code is generic so adding support for more object types is a
      matter of touching the parser rules only.
      
      Author: Abhijit Menon-Sen
      Reviewed-by: Alexander Korotkov, Álvaro Herrera
      Discussion: http://www.postgresql.org/message-id/20160115062649.GA5068@toroid.org
      f2fcad27