1. 08 Apr, 2016 22 commits
    • Tom Lane's avatar
      Add BSD authentication method. · 34c33a1f
      Tom Lane authored
      Create a "bsd" auth method that works the same as "password" so far as
      clients are concerned, but calls the BSD Authentication service to
      check the password.  This is currently only available on OpenBSD.
      
      Marisa Emerson, reviewed by Thomas Munro
      34c33a1f
    • Robert Haas's avatar
      Add combine functions for various floating-point aggregates. · af025eed
      Robert Haas authored
      This allows parallel aggregation to use them.  It may seem surprising
      that we use float8_combine for both float4_accum and float8_accum
      transition functions, but that's because those functions differ only
      in the type of the non-transition-state argument.
      
      Haribabu Kommi, reviewed by David Rowley and Tomas Vondra
      af025eed
    • Teodor Sigaev's avatar
      Fix output of regression test of contrib/tsearch2 · 38627f68
      Teodor Sigaev authored
      Just forget to add in 1ec4c7c0
      38627f68
    • Teodor Sigaev's avatar
      Restore original tsquery operation numbering. · 1ec4c7c0
      Teodor Sigaev authored
      As noticed by Tom Lane changing operation's number in commit
      bb140506 causes on-disk format incompatibility.
      Revert to previous numbering, that is reason to add special array to store
      priorities of operation. Also it reverts order of tsquery to previous.
      
      Author: Dmitry Ivanov
      1ec4c7c0
    • Andrew Dunstan's avatar
      76a1c97b
    • Teodor Sigaev's avatar
      CREATE INDEX ... INCLUDING (column[, ...]) · 386e3d76
      Teodor Sigaev authored
      Now indexes (but only B-tree for now) can contain "extra" column(s) which
      doesn't participate in index structure, they are just stored in leaf
      tuples. It allows to use index only scan by using single index instead
      of two or more indexes.
      
      Author: Anastasia Lubennikova with minor editorializing by me
      Reviewers: David Rowley, Peter Geoghegan, Jeff Janes
      386e3d76
    • Peter Eisentraut's avatar
      Replace printf format %i by %d · 339025c6
      Peter Eisentraut authored
      see also ce8d7bb6
      339025c6
    • 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 3 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