1. 08 Apr, 2016 32 commits
    • Stephen Frost's avatar
      Reserve the "pg_" namespace for roles · 29300789
      Stephen Frost authored
      This will prevent users from creating roles which begin with "pg_" and
      will check for those roles before allowing an upgrade using pg_upgrade.
      
      This will allow for default roles to be provided at initdb time.
      
      Reviews by José Luis Tallón and Robert Haas
      29300789
    • Stephen Frost's avatar
      Fix improper usage of 'dump' bitmap · fa6075e5
      Stephen Frost authored
      Now that 'dump' is a bitmap, we can't simply set it to 'true'.
      
      Noticed while debugging the prior issue.
      fa6075e5
    • Kevin Grittner's avatar
      Add the "snapshot too old" feature · 848ef42b
      Kevin Grittner authored
      This feature is controlled by a new old_snapshot_threshold GUC.  A
      value of -1 disables the feature, and that is the default.  The
      value of 0 is just intended for testing.  Above that it is the
      number of minutes a snapshot can reach before pruning and vacuum
      are allowed to remove dead tuples which the snapshot would
      otherwise protect.  The xmin associated with a transaction ID does
      still protect dead tuples.  A connection which is using an "old"
      snapshot does not get an error unless it accesses a page modified
      recently enough that it might not be able to produce accurate
      results.
      
      This is similar to the Oracle feature, and we use the same SQLSTATE
      and error message for compatibility.
      848ef42b
    • Kevin Grittner's avatar
      Modify BufferGetPage() to prepare for "snapshot too old" feature · 8b65cf4c
      Kevin Grittner authored
      This patch is a no-op patch which is intended to reduce the chances
      of failures of omission once the functional part of the "snapshot
      too old" patch goes in.  It adds parameters for snapshot, relation,
      and an enum to specify whether the snapshot age check needs to be
      done for the page at this point.  This initial patch passes NULL
      for the first two new parameters and BGP_NO_SNAPSHOT_TEST for the
      third.  The follow-on patch will change the places where the test
      needs to be made.
      8b65cf4c
    • Stephen Frost's avatar
      In dumpTable, re-instate the skipping logic · 689f9a05
      Stephen Frost authored
      Pretty sure I removed this based on some incorrect thinking that it was
      no longer possible to reach this point for a table which will not be
      dumped, but that's clearly wrong.
      
      Pointed out on IRC by Erik Rijkers.
      689f9a05
    • Teodor Sigaev's avatar
      Revert CREATE INDEX ... INCLUDING ... · 8b99edef
      Teodor Sigaev authored
      It's not ready yet, revert two commits
      690c5435 - unstable test output
      386e3d76 - patch itself
      8b99edef
    • Magnus Hagander's avatar
      Add authentication parameters compat_realm and upn_usename for SSPI · 35e2e357
      Magnus Hagander authored
      These parameters are available for SSPI authentication only, to make
      it possible to make it behave more like "normal gssapi", while
      making it possible to maintain compatibility.
      
      compat_realm is on by default, but can be turned off to make the
      authentication use the full Kerberos realm instead of the NetBIOS name.
      
      upn_username is off by default, and can be turned on to return the users
      Kerberos UPN rather than the SAM-compatible name (a user in Active
      Directory can have both a legacy SAM-compatible username and a new
      Kerberos one. Normally they are the same, but not always)
      
      Author: Christian Ullrich
      Reviewed by: Robbie Harwood, Alvaro Herrera, me
      35e2e357
    • Teodor Sigaev's avatar
      Fix possible use of uninitialised value in ts_headline() · cb0c8cbf
      Teodor Sigaev authored
      Found during investigation of failure of skink buildfarm member and its
      valgrind report.
      
      Backpatch to all supported branches
      cb0c8cbf
    • Tom Lane's avatar
      Fix unstable regression test output. · 690c5435
      Tom Lane authored
      Output order from the pg_indexes view might vary depending on the
      phase of the moon, so add ORDER BY to ensure stable results of tests
      added by commit 386e3d76.
      Per buildfarm.
      690c5435
    • Peter Eisentraut's avatar
      Distrust external OpenSSL clients; clear err queue · 7c7d4fdd
      Peter Eisentraut authored
      OpenSSL has an unfortunate tendency to mix per-session state error
      handling with per-thread error handling.  This can cause problems when
      programs that link to libpq with OpenSSL enabled have some other use of
      OpenSSL; without care, one caller of OpenSSL may cause problems for the
      other caller.  Backend code might similarly be affected, for example
      when a third party extension independently uses OpenSSL without taking
      the appropriate precautions.
      
      To fix, don't trust other users of OpenSSL to clear the per-thread error
      queue.  Instead, clear the entire per-thread queue ahead of certain I/O
      operations when it appears that there might be trouble (these I/O
      operations mostly need to call SSL_get_error() to check for success,
      which relies on the queue being empty).  This is slightly aggressive,
      but it's pretty clear that the other callers have a very dubious claim
      to ownership of the per-thread queue.  Do this is both frontend and
      backend code.
      
      Finally, be more careful about clearing our own error queue, so as to
      not cause these problems ourself.  It's possibly that control previously
      did not always reach SSLerrmessage(), where ERR_get_error() was supposed
      to be called to clear the queue's earliest code.  Make sure
      ERR_get_error() is always called, so as to spare other users of OpenSSL
      the possibility of similar problems caused by libpq (as opposed to
      problems caused by a third party OpenSSL library like PHP's OpenSSL
      extension).  Again, do this is both frontend and backend code.
      
      See bug #12799 and https://bugs.php.net/bug.php?id=68276
      
      Based on patches by Dave Vitek and Peter Eisentraut.
      
      From: Peter Geoghegan <pg@bowt.ie>
      7c7d4fdd
    • 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 8 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