Обсуждение: == PostgreSQL Weekly News - August 21 2016 ==

Поиск
Список
Период
Сортировка

== PostgreSQL Weekly News - August 21 2016 ==

От
David Fetter
Дата:
== PostgreSQL Weekly News - August 21 2016 ==

== PostgreSQL Jobs for August ==

http://archives.postgresql.org/pgsql-jobs/2016-08/threads.php

== PostgreSQL Local ==

PostgresOpen 2016 in will be held in Dallas, Texas September 13-16.
https://2016.postgresopen.org/

PostgreSQL Session will be held on September 22th, 2016, in Lyon,
France.
http://blog.dalibo.com/2016/05/13/CFP-pgsession-lyon.html

Postgres Vision 2016 will be held October 11-13, 2016, in San Francisco.
http://postgresvision.com/

PostgreSQL Conference Europe will take place in Tallin, Estonia, on
November 1-4, 2016.  Early bird registration is open until September
14th, 2016.
http://2016.pgconf.eu/registration/

PgConf Silicon Valley 2016 will be held on November 14-16, 2016.
http://www.pgconfsv.com/

CHAR(16) will take place in New York, December 6, 2016.  Call for
papers is open until midnight (EDT) September 13, 2016.
http://charconference.org/

== PostgreSQL in the News ==

Planet PostgreSQL: http://planet.postgresql.org/

PostgreSQL Weekly News is brought to you this week by David Fetter.

Submit news and announcements by Sunday at 3:00pm Pacific time.
Please send English language ones to david@fetter.org, German language
to pwn@pgug.de, Italian language to pwn@itpug.org.

== Applied Patches ==

Tom Lane pushed:

- Simplify the process of perltidy'ing our Perl files.  Wrap the
  perltidy invocation into a shell script to reduce the risk of
  copy-and-paste errors.  Include removal of *.bak files in the
  script, so they don't accidentally get committed.  Improve the
  directions in the README file.
  http://git.postgresql.org/pg/commitdiff/05d8dec690e9719ff9a1830f5492864104275b5e

- Final pgindent + perltidy run for 9.6.
  http://git.postgresql.org/pg/commitdiff/b5bce6c1ec6061c8a4f730d927e162db7e2ce365

- Stamp HEAD as 10devel.  This is a good bit more complicated than the
  average new-version stamping commit, because it includes various
  adjustments in pursuit of changing from three-part to two-part
  version numbers.  It's likely some further work will be needed
  around that change; but this is enough to get through the regression
  tests, at least in Unix builds.  Peter Eisentraut and Tom Lane
  http://git.postgresql.org/pg/commitdiff/ca9112a424ff68ec4f2ef67b47122f7d61412964

- Stamp shared-library minor version numbers for v10.
  http://git.postgresql.org/pg/commitdiff/0b9358d4406b9b45a06855d53f491cc7ce9550a9

- Update git_changelog to know that there's a 9.6 branch.  Missed this
  in the main 10devel version stamping patch.
  http://git.postgresql.org/pg/commitdiff/3149a12166120d0b476f5ca7837ebcf0e7124703

- Allow .so minor version numbers above 9 in .gitignore.  Needed now
  that libpq.so's minor version has reached 10.
  http://git.postgresql.org/pg/commitdiff/2bf06f756142f4c398270cdc30bbba9b9dfbd38b

- Doc: remove out-of-date claim that pg_am rows must be inserted by
  hand.  Commit 473b93287 added a sentence about that, but neglected
  to remove the adjacent sentence it had falsified.  Per Alexander
  Law.
  http://git.postgresql.org/pg/commitdiff/8fc571b7dd9fa1659536a26bb085584b50a65a51

- Doc: copy-editing in create_access_method.sgml.  Improve shaky
  English grammar.  And markup.
  http://git.postgresql.org/pg/commitdiff/9b002cc9fec557fcfe17d67f55b53804447230e5

- Remove separate version numbering for ecpg preprocessor.  Once upon
  a time, it made sense for the ecpg preprocessor to have its own
  version number, because it used a manually-maintained grammar that
  wasn't always in sync with the core grammar.  But those days are
  thankfully long gone, leaving only a maintenance nuisance behind.
  Let's use the PG v10 version numbering changeover as an excuse to
  get rid of the ecpg version number and just have ecpg identify
  itself by PG_VERSION.  From the user's standpoint, ecpg will go from
  "4.12" in the 9.6 branch to "10" in the 10 branch, so there's no
  failure of monotonicity.  Discussion:
  <1471332659.4410.67.camel@postgresql.org>
  http://git.postgresql.org/pg/commitdiff/a7b5573d665c8a37fad9bc69f44c5b4e8760a73b

- Automate the maintenance of SO_MINOR_VERSION for our shared
  libraries.  Up to now we've manually adjusted these numbers in
  several different Makefiles at the start of each development cycle.
  While that's not much work, it's easily forgotten, so let's get rid
  of it by setting the SO_MINOR_VERSION values directly from
  $(MAJORVERSION).  In the case of libpq, this dev cycle's value of
  SO_MINOR_VERSION happens to be "10" anyway, so this switch is
  transparent.  For ecpg's shared libraries, this will result in
  skipping one or two minor version numbers between v9.6 and v10,
  which seems like no big problem; and it was a bit inconsistent that
  they didn't have equal minor version numbers anyway.  Discussion:
  <21969.1471287988@sss.pgh.pa.us>
  http://git.postgresql.org/pg/commitdiff/a3bce17ef1ca6408e8d1e7b10fb767aef1729be6

- Fix assorted places in psql to print version numbers >= 10 in new
  style.  This is somewhat cosmetic, since as long as you know what
  you are looking at, "10.0" is a serviceable substitute for "10".
  But there is a potential for confusion between version numbers with
  minor numbers and those without --- we don't want people asking "why
  is psql saying 10.0 when my server is 10.2".  Therefore, back-patch
  as far as practical, which turns out to be 9.3.  I could have redone
  the patch to use fprintf(stderr) in place of psql_error(), but it
  seems more work than is warranted for branches that will be EOL or
  nearly so by the time v10 comes out.  Although only psql seems to
  contain any code that needs this, I chose to put the support
  function into fe_utils, since it seems likely we'll need it in other
  client programs in future.  (In 9.3-9.5, use dumputils.c, the
  predecessor of fe_utils/string_utils.c.) In HEAD, also fix the
  backend code that whines about loadable-library version mismatch.  I
  don't see much need to back-patch that.
  http://git.postgresql.org/pg/commitdiff/7f61fd10ceb715eceece49451f6dfe9058044e15

- Suppress -Wunused-result warning for strtol().  I'm not sure which
  bozo thought it's a problem to use strtol() only for its endptr
  result, but silence the warning using same method used elsewhere.
  Report: <f845d3a6-5328-3e2a-924f-f8e91aa2b6d2@2ndquadrant.com>
  http://git.postgresql.org/pg/commitdiff/4bc4cfe3bd186b4a1d1b01279bfd0e6ab11268b2

- Improve parsetree representation of special functions such as
  CURRENT_DATE.  We implement a dozen or so parameterless functions
  that the SQL standard defines special syntax for.  Up to now, that
  was done by converting them into more or less ad-hoc constructs such
  as "'now'::text::date".  That's messy for multiple reasons: it
  exposes what should be implementation details to users, and
  performance is worse than it needs to be in several cases.  To
  improve matters, invent a new expression node type SQLValueFunction
  that can represent any of these parameterless functions.  Bump
  catversion because this changes stored parsetrees for rules.
  Discussion: <30058.1463091294@sss.pgh.pa.us>
  http://git.postgresql.org/pg/commitdiff/0bb51aa96783e8a6c473c2b5e3725e23e95db834

- Improve plpgsql's memory management to fix some function-lifespan
  leaks.  In some cases, exiting out of a plpgsql statement due to an
  error, then catching the error in a surrounding exception block, led
  to leakage of temporary data the statement was working with, because
  we kept all such data in the function-lifespan SPI Proc context.
  Iterating such behavior many times within one function call thus led
  to noticeable memory bloat.  To fix, create an additional memory
  context meant to have statement lifespan.  Since many plpgsql
  statements, particularly the simpler/more common ones, don't need
  this, create it only on demand.  Reset this context at the end of
  any statement that uses it, and arrange for exception cleanup to
  reset it too, thereby fixing the memory-leak issue.  Allow a stack
  of such contexts to exist to handle cases where a compound statement
  needs statement-lifespan data that persists across calls of inner
  statements.  While at it, clean up code and improve comments
  referring to the existing short-term memory context, which by
  plpgsql convention is the per-tuple context of the eval_econtext
  ExprContext.  We now uniformly refer to that as the eval_mcontext,
  whereas the new statement-lifespan memory contexts are called
  stmt_mcontext.  This change adds some context-creation overhead, but
  on the other hand it allows removal of some retail pfree's in favor
  of context resets.  On balance it seems to be about a wash
  performance-wise.  In principle this is a bug fix, but it seems too
  invasive for a back-patch, and the infrequency of complaints weighs
  against taking the risk in the back branches.  So we'll fix it only
  in HEAD, at least for now.  Tom Lane, reviewed by Pavel Stehule
  Discussion: <17863.1469142152@sss.pgh.pa.us>
  http://git.postgresql.org/pg/commitdiff/bfaaacc805aef9f07b4805c6a274256340b9cddf

- Fix -e option in contrib/intarray/bench/bench.pl.  As implemented,
  -e ran an EXPLAIN but then discarded the output, which certainly
  seems pointless.  Make it print to stdout instead.  It's been like
  that forever, so back-patch to all supported branches.  Daniel
  Gustafsson, reviewed by Andreas Scherbaum.  Patch:
  <B97BDCB7-A3B3-4734-90B5-EDD586941629@yesql.se>
  http://git.postgresql.org/pg/commitdiff/6657acc0100ec79304b868a6346db4d8eb2f6b83

- Implement regexp_match(), a simplified alternative to
  regexp_matches().  regexp_match() is like regexp_matches(), but it
  disallows the 'g' flag and in consequence does not need to return a
  set.  Instead, it returns a simple text array value, or NULL if
  there's no match.  Previously people usually got that behavior with
  a sub-select, but this way is considerably more efficient.
  Documentation adjusted so that regexp_match() is presented first and
  then regexp_matches() is introduced as a more complicated version.
  This is a bit historically revisionist but seems pedagogically
  better.  Still TODO: extend contrib/citext to support this function.
  Emre Hasegeli, reviewed by David Johnston Discussion:
  <CAE2gYzy42sna2ME_e3y1KLQ-4UBrB-eVF0SWn8QG39sQSeVhEw@mail.gmail.com>
  http://git.postgresql.org/pg/commitdiff/cf9b0fea5f6d1bcc9b2c66f5c30ecb04684a0919

- Support the new regexp_match() function for citext.  Emre Hasegeli
  Patch:
  <CAE2gYzzF24ZHWqkMukkHwqa0otbES9Rex22LrjQUNbi=oKziNQ@mail.gmail.com>
  http://git.postgresql.org/pg/commitdiff/f9d747a4e908ad09520cad4c0e8c915074e9964c

- Improve psql's tab completion for ALTER EXTENSION foo UPDATE ...
  Offer a list of available versions for that extension.  Formerly,
  since there was no special support for this, it triggered off the
  UPDATE keyword and offered a list of table names --- not too
  helpful.  Jeff Janes, reviewed by Gerdan Santos Patch:
  <CAMkU=1z0gxEOLg2BWa69P4X4Ot8xBxipGUiGkXe_tC+raj79-Q@mail.gmail.com>
  http://git.postgresql.org/pg/commitdiff/49917dbd76ba0b4179a82fcf033ef5a10b8e3488

- Improve psql's tab completion for \l.  Offer a list of database
  names; formerly no help was offered.  Ian Barwick, reviewed by
  Gerdan Santos Patch: <5724132E.1030804@2ndquadrant.com>
  http://git.postgresql.org/pg/commitdiff/8019b5a89c3cefbaa69ab58c00281419f7e46601

- In plpgsql, don't try to convert int2vector or oidvector to expanded
  array.  These types are storage-compatible with real arrays, but
  they don't support toasting, so of course they can't support
  expansion either.  Per bug #14289 from Michael Overmeyer.
  Back-patch to 9.5 where expanded arrays were introduced.  Report:
  <20160818174414.1529.37913@wrigleys.postgresql.org>
  http://git.postgresql.org/pg/commitdiff/5697522d8411135d26a5d807f9e4afa182502f64

- Update line count totals for psql help displays.  As usual, we've
  been pretty awful about maintaining these counts.  They're not all
  that critical, perhaps, but let's get them right at release time.
  Also fix 9.5, which I notice is just as bad.  It's probably wrong
  further back, but the lack of --help=foo options before 9.5 makes it
  too painful to count.
  http://git.postgresql.org/pg/commitdiff/c5d4f40cb5e231eb2cbc533b5f094f3a4829e2ef

- Remove typedef celt from the regex library, along with macro NOCELT.
  The regex library used to have a notion of a "collating element"
  that was distinct from a "character", but Henry Spencer never
  actually implemented his planned support for multi-character
  collating elements, and the Tcl crew ripped out most of the stubs
  for that years ago.  The only thing left that distinguished the
  "celt" typedef from the "chr" typedef was that "celt" was supposed
  to also be able to hold the not-a-character "NOCELT" value.
  However, NOCELT was not used anywhere after the MCCE stub removal
  changes, which means there's no need for celt to be different from
  chr.  Removing the separate typedef simplifies matters and also
  removes a trap for the unwary, in that celt is signed while chr may
  not be, so comparisons could mean different things.  There's no bug
  there today because we restrict CHR_MAX to be less than INT_MAX, but
  I think there may have been such bugs before we did that, and there
  could be again if anyone ever decides to fool with the range of chr.
  This patch also removes assorted unnecessary casts to "chr" of
  values that are already chrs.  Many of these seem to be leftover
  from days when the code was compatible with pre-ANSI C.
  http://git.postgresql.org/pg/commitdiff/6eefd2422ef232aec2fe12465d9ec4018c63814d

- Clean up another pre-ANSI-C-ism in regex code: get rid of pcolor
  typedef.  pcolor was used to represent function arguments that are
  nominally of type color, but when using a pre-ANSI C compiler would
  be passed as the promoted integer type.  We really don't need that
  anymore.
  http://git.postgresql.org/pg/commitdiff/a859e640035680db31531ccd19a67292dd726baf

- Speed up planner's scanning for parallel-query hazards.  We need to
  scan the whole parse tree for parallel-unsafe functions.  If there
  are none, we'll later need to determine whether particular subtrees
  contain any parallel-restricted functions.  The previous coding
  retained no knowledge from the first scan, even though this is very
  wasteful in the common case where the query contains only
  parallel-safe functions.  We can bypass all of the later scans by
  remembering that fact.  This provides a small but measurable speed
  improvement when the case applies, and shouldn't cost anything when
  it doesn't.  Patch by me, reviewed by Robert Haas Discussion:
  <3740.1471538387@sss.pgh.pa.us>
  http://git.postgresql.org/pg/commitdiff/da1c91631e3577ea5818f855ebb5bd206d559006

- Guard against parallel-restricted functions in VALUES expressions.
  Obvious brain fade in set_rel_consider_parallel().  Noticed it while
  adjusting the adjacent RTE_FUNCTION case.  In 9.6, also make the
  code look more like what I just did in HEAD by removing the
  unnecessary function_rte_parallel_ok subroutine (it does nothing
  that expression_tree_walker wouldn't do).
  http://git.postgresql.org/pg/commitdiff/65a603e90328a7a8fb3ab30ed96f24bf8eb4cf84

- Use LEFT JOINs in some system views in case referenced row doesn't
  exist.  In particular, left join to pg_authid so that rows in
  pg_stat_activity don't disappear if the session's owning user has
  been dropped.  Also convert a few joins to pg_database to left
  joins, in the same spirit, though that case might be harder to hit.
  We were doing this in other views already, so it was a bit
  inconsistent that these views didn't.  Oskari Saarenmaa, with some
  further tweaking by me Discussion: <56E87CD8.60007@ohmu.fi>
  http://git.postgresql.org/pg/commitdiff/8299471c37fff0b0f5a777a12f920125310c0efe

- Allow empty queries in pgbench.  This might have been too much of a
  foot-gun before 9.6, but with the new commands-end-at-semicolons
  parsing rule, the only way to get an empty query into a script is to
  explicitly write an extra ";".  So we may as well allow the case.
  Fabien Coelho Patch: <alpine.DEB.2.20.1607090922170.3412@sto>
  http://git.postgresql.org/pg/commitdiff/6471045230f5d891ad724c54d406e2214f3c96d9

- Make initdb's suggested "pg_ctl start" command line more reliable.
  The original coding here was not nearly careful enough about quoting
  special characters, and it didn't get corner cases right for
  constructing the pg_ctl path either.  Use join_path_components() and
  appendShellString() to do it honestly, so that the string will more
  likely work if blindly copied-and-pasted.  While at it, teach
  appendShellString() not to quote strings that clearly don't need it,
  so that the output from initdb doesn't become uglier than it was
  before in typical cases where quoting is not needed.  Ryan Murphy,
  reviewed by Michael Paquier and myself Discussion:
  <CAHeEsBeAe1FeBypT3E8R1ZVZU0e8xv3A-7BHg6bEOi=jZny2Uw@mail.gmail.com>
  http://git.postgresql.org/pg/commitdiff/a00c58314745772f6c6a49b6d02a9572cd600bda

- initdb now needs to reference libpq include files in MSVC builds.
  Fallout from commit a00c58314.  Per buildfarm.
  http://git.postgresql.org/pg/commitdiff/04164deb7cb8e572302e2b43786fa24de3c40da3

Robert Haas pushed:

- Once again allow LWLocks to be used within DSM segments.  Prior to
  commit 7882c3b0b95640e361f1533fe0f2d02e4e5d8610, it was possible to
  use LWLocks within DSM segments, but that commit broke this use case
  by switching from a doubly linked list to a circular linked list.
  Switch back, using a new bit of general infrastructure for
  maintaining lists of PGPROCs.  Thomas Munro, reviewed by me.
  http://git.postgresql.org/pg/commitdiff/b25b6c9701e5c18e3ad3b701df62380f8d138ba0

- Fix possible crash due to incorrect allocation context.  Commit
  af33039317ddc4a0e38a02e2255c2bf453115fd2 aimed to reduce leakage
  from tqueue.c, which is good.  Unfortunately, by changing the memory
  context in which all of gather_readnext() executes, it also changed
  the context in which ExecShutdownGatherWorkers executes, which is
  not good, because that function eventually causes a call to
  ExecParallelRetrieveInstrumentation, which proceeds to allocate
  planstate->worker_instrument in a short-lived context, causing a
  crash.  Rushabh Lathia, reviewed by Amit Kapila and by me.
  http://git.postgresql.org/pg/commitdiff/41fb35fabf03bffa812caddf24323d4d06f811ba

Peter Eisentraut pushed:

- Fix typos.  From: Alexander Law <exclusion@gmail.com>
  http://git.postgresql.org/pg/commitdiff/f0fe1c8f70bacb65513f1cbaea14eb384d346ee8

- doc: Remove some confusion from pg_archivecleanup doc.  From: Jeff
  Janes <jeff.janes@gmail.com>
  http://git.postgresql.org/pg/commitdiff/639166641102871e09f9c4aebc71df57566a0a4a

- Improve formatting of comments in plpgsql.h.  This file had some
  unusual comment layout.  Most of the comments introducing structs
  ended up to the right of the screen and following the start of the
  struct.  Some comments for struct members ended up after the member
  definition.  Fix that by moving comments consistently before what
  they are describing.  Also add missing struct tags where missing so
  that it is easier to tell what the struct is.
  http://git.postgresql.org/pg/commitdiff/9f31e45a6d36a2564423a20601d5066939ea83c1

- doc: Speed up XSLT builds.  The upstream XSLT stylesheets use some
  very general XPath expressions in some places that end up being very
  slow.  We can optimize them with knowledge about the DocBook
  document structure and our particular use thereof.  For example,
  when counting preceding chapters to get a number for the current
  chapter, we only need to count preceding sibling nodes (more or
  less) instead of searching through the entire node tree for chapter
  elements.  This change attacks the slowest pieces as identified by
  xsltproc --profile.  This makes the HTML build roughly 10 times
  faster, resulting in the new total build time being about the same
  as the old DSSSL-based build.  Some of the non-HTML build targets
  (especially FO) will also benefit a bit, but they have not been
  specifically analyzed.  With this, also remove the pg.fast
  parameter, which was previously a hack to get the build to a
  manageable speed.  Alexander Lakhin <a.lakhin@postgrespro.ru>, with
  some additional tweaking by me
  http://git.postgresql.org/pg/commitdiff/e8306745e3504c642f7abad411139d5630e29fac

- Remove obsolete replacement system() on darwin.  Per comment in the
  file, this was fixed around OS X 10.2.
  http://git.postgresql.org/pg/commitdiff/1d2e73a3dfdbd7168b323fa39879c60df6076412

Bruce Momjian pushed:

- docs:  my third pass over the 9.6 release notes.  Backpatch-through:
  9.6
  http://git.postgresql.org/pg/commitdiff/d125d25790901683d5ad16bfc96e9de4ccc9a581

- doc:  requirepeer is a way to avoid spoofing.  We already mentioned
  unix_socket_directories as an option.  Reported-by:
  https://www.postgresql.org/message-id/45016837-6cf3-3136-f959-763d06a28076%402ndquadrant.com
  Backpatch-through: 9.6
  http://git.postgresql.org/pg/commitdiff/5285c5e873d8b622da7007c1628e5afa80f372fb

Magnus Hagander pushed:

- Disable update_process_title by default on Windows.  The performance
  overhead of this can be significant on Windows, and most people
  don't have the tools to view it anyway as Windows does not have
  native support for process titles.  Discussion:
  <0A3221C70F24FB45833433255569204D1F5BE3E8@G01JPEXMBYT05> Takayuki
  Tsunakawa
  http://git.postgresql.org/pg/commitdiff/092155465710b22ec9a99820ce6400a889580805

- Update Windows timezone mapping from Windows 7 and 10.  This adds a
  couple of new timezones that are present in the newer versions of
  Windows. It also updates comments to reference UTC rather than GMT,
  as this change has been made in Windows.  Michael Paquier
  http://git.postgresql.org/pg/commitdiff/a79a68562240c58f21680483a8d2e137803bd48f

Andres Freund pushed:

- Properly re-initialize replication slot shared memory upon creation.
  Slot creation did not clear all fields upon creation. After start
  the memory is zeroed, but when a physical replication slot was
  created in the shared memory of a previously existing logical slot,
  catalog_xmin would not be cleared. That in turn would prevent vacuum
  from doing its duties.  To fix initialize all the fields. To make
  similar future bugs less likely, zero all of
  ReplicationSlotPersistentData, and re-order the rest of the
  initialization to be in struct member order.  Analysis: Andrew
  Gierth.  Reported-By: md@chewy.com.  Author: Michael Paquier.
  Discussion: <20160705173502.1398.70934@wrigleys.postgresql.org>.
  Backpatch: 9.4, where replication slots were introduced
  http://git.postgresql.org/pg/commitdiff/2d7e591007a6f44e5e27e2b6c1098483105c0d10

- Fix deletion of speculatively inserted TOAST on conflict.  INSERT ..
  ON CONFLICT runs a pre-check of the possible conflicting constraints
  before performing the actual speculative insertion.  In case the
  inserted tuple included TOASTed columns the ON CONFLICT condition
  would be handled correctly in case the conflict was caught by the
  pre-check, but if two transactions entered the speculative insertion
  phase at the same time, one would have to re-try, and the code for
  aborting a speculative insertion did not handle deleting the
  speculatively inserted TOAST datums correctly.  TOAST deletion would
  fail with "ERROR: attempted to delete invisible tuple" as we
  attempted to remove the TOAST tuples using simple_heap_delete which
  reasoned that the given tuples should not be visible to the command
  that wrote them.  This commit updates the heap_abort_speculative()
  function which aborts the conflicting tuple to use itself, via
  toast_delete, for deleting associated TOAST datums.  Like before,
  the inserted toast rows are not marked as being speculative.  This
  commit also adds a isolationtester spec test, exercising the
  relevant code path. Unfortunately 9.5 cannot handle two waiting
  sessions, and thus cannot execute this test.  Reported-By: Viren
  Negi, Oskari Saarenmaa.  Author: Oskari Saarenmaa, edited a bit by
  me.  Bug: #14150.  Discussion:
  <20160519123338.12513.20271@wrigleys.postgresql.org>.  Backpatch:
  9.5, where ON CONFLICT was introduced
  http://git.postgresql.org/pg/commitdiff/07ef035129586ca26a713c4cd15e550dfe35e643

- Add alternative output for ON CONFLICT toast isolation test.  On
  some buildfarm animals the isolationtest added in 07ef0351 failed,
  as the order in which processes are run after unlocking is not
  guaranteed. Add an alternative output for that.  Discussion:
  <7969.1471484738@sss.pgh.pa.us> Backpatch: 9.6, like the test in the
  aforementioned commit
  http://git.postgresql.org/pg/commitdiff/9595383bc6fc24d25970374e2eddd5ce6f977f9e

Heikki Linnakangas pushed:

- Refactor sendAuthRequest.  This way sendAuthRequest doesn't need to
  know the details of all the different authentication methods. This
  is in preparation for adding SCRAM authentication, which will add
  yet another authentication request message type, with different
  payload.  Reviewed-By: Michael Paquier.  Discussion:
  <CAB7nPqQvO4sxLFeS9D+NM3wpy08ieZdAj_6e117MQHZAfxBFsg@mail.gmail.com>
  http://git.postgresql.org/pg/commitdiff/8d3b9cce81c173da55b9500353e5d773f8449a66

- Refactor RandomSalt to handle salts of different lengths.  All we
  need is 4 bytes at the moment, for MD5 authentication. But in
  upcomint patches for SCRAM authentication, SCRAM will need a salt of
  different length. It's less scary for the caller to pass the buffer
  length anyway, than assume a certain-sized output buffer.  Author:
  Michael Paquier.  Discussion:
  <CAB7nPqQvO4sxLFeS9D+NM3wpy08ieZdAj_6e117MQHZAfxBFsg@mail.gmail.com>
  http://git.postgresql.org/pg/commitdiff/fa878703f456b804b01b61a9d94008f57967cdd0

Álvaro Herrera pushed:

- reorderbuffer: preserve errno while reporting error.  Clobbering
  errno during cleanup after an error is an oft-repeated, easy to make
  mistake.  Deal with it here as everywhere else, by saving it aside
  and restoring after cleanup, before ereport'ing.  In passing, add a
  missing errcode declaration in another ereport() call in the same
  file, which I noticed while skimming the file looking for similar
  problems.  Backpatch to 9.4, where this code was introduced.
  http://git.postgresql.org/pg/commitdiff/6f79ae7fe549bed8bbd1f54ddd9b98f8f9a315f5

== Pending Patches ==

Thomas Munro sent in another revision of a patch to add condition
variables.

Haribabu Kommi sent in another revision of a patch to add a
pg_hba_file_settings view.

Artur Zakirov sent in a patch to add a to_date_valid() function.

Peter Geoghegan sent in another revision of a patch to displace heap's
root during tuplesort merge.

Ildar Musin sent in a patch to add index-only scans for expressions.

Anastasia Lubennikova sent in another revision of a patch to add
covering + unique indexes.

Thomas Munro sent in two more revisions of a patch to add barriers.

David Steele sent in a patch to exclude additional directories in
pg_basebackup.

Haribabu Kommi sent in a patch to add a function to control the number
of parallel workers that can be generated for a parallel query, and a
contrib extension to use same to consider system load while generating
parallel workers.

Peter Eisentraut sent in another revision of a patch to set
log_line_prefix and application name in test drivers.

Peter Eisentraut sent in another revision of a patch to add NEXT VALUE
FOR.

Peter Eisentraut sent in a patch to run the select_parallel test by
itself.

Jeff Janes sent in a patch to mention that hash indexes can be used in
uniqueness constraints via EXCLUDE constraints.

Craig Ringer sent in a patch to add a function to get the 32-bit xid
from a bigint extended xid-with-epoch.

Oskari Saarenmaa sent in two revisions of a patch to use pread and
pwrite instead of lseek + write and read.

Artur Zakirov sent in another revision of a patch to add
to_timestamp() format checking.

Claudio Freire sent in a patch to keep indexes sorted by heap physical
location.

Andrew Borodin sent in another revision of a patch to optimize
memmoves in gistplacetopage for fixed size updates.

Emre Hasegeli sent in a patch to add a regexp_match() returning text
for citext.

Andres Freund sent in another revision of a patch to improve
scalability of md.c for large relations and speed up PageIsVerified()
for the all zeroes case.

Amit Langote and Robert Haas traded patches to fix the ALTER TABLE
docs to mention that VALIDATE CONSTRAINT will fail if ONLY is
specified and there are descendant tables.

Michaël Paquier sent in another revision of a patch to add checks for
the case when malloc() returns NULL.

Michaël Paquier sent in a patch to move the md5 and ip implementations
to src/common, where they're usable by more things.

Peter Eisentraut sent in a patch to allow forcing pg_basebackup to
clean created directories on failure.

Bruce Momjian sent in two revisions of a patch to make pg_hba.conf
case-insensitive.

Alexander Korotkov sent in a patch to cacheline align PGXACT.

Dagfinn Ilmari Mannsåker sent in a patch to add ALTER TYPE ... RENAME
VALUE for enums.

Thomas Munro sent in a patch to add a new subsystem: Dynamic Shared
Memory Areas.

Pavel Stehule sent in another revision of a patch to add xmltable().

Etsuro Fujita sent in a patch to push down more full joins in
postgres_fdw.

Peter Eisentraut sent in a patch to make better use of existing enums
in plpgsql.

Peter Geoghegan sent in a patch to fix a bug in abbreviated keys abort
handling, that bug having been found with amcheck.

Adrien Nayrat and Michaël Paquier traded patches to add LSN as a
recovery target.

Aleksander Alekseev sent in another revision of a patch to make
PostgreSQL sanitizers-friendly and prevent information disclosure.

Haribabu Kommi sent in a POC patch based on ProcessUtilityHook to
restrict the CREATE TRIGGER, CREATE FUNCTION, CREATE AGGREGATE, CREATE
OPERATOR, CREATE VIEW and CREATE POLICY commands from normal users.

Craig Ringer sent in two revisions of a patch to implement a
txid_status(bigint) function to report the commit status of a
function.

Petr Jelinek sent in another revision of a patch to implement logical
replication in core.

Thomas Munro sent in another revision of a patch to implement
dsm_unpin_segment().