== PostgreSQL Weekly News - December 15, 2019 == - Mailing list pgsql-announce

From David Fetter
Subject == PostgreSQL Weekly News - December 15, 2019 ==
Date
Msg-id 20191215214920.GA20131@fetter.org
Whole thread Raw
List pgsql-announce
== PostgreSQL Weekly News - December 15, 2019 ==

pgBackRest 2.20, a backup and restore system for PostgreSQL, released.
https://pgbackrest.org/release.html#2.20

barman 2.10, a backup and recovery manager for PostgreSQL, released.
https://www.pgbarman.org/barman-2-10-released/

Odyssey 1.0, a multi-threaded connection pooler for PostgreSQL, released.
https://github.com/yandex/odyssey/releases

phpPgAdmin 7.12.1, a web-based administration tool for PostgreSQL, released.
https://xzilla.net//blog/2019/Dec/phpPgAdmin-7-12-1-released.html

PGCon 2019 will take place in Ottawa on May 26-29, 2020.  The CfP is open
through January 19, 2020 at http://www.pgcon.org/2020/papers.php
https://www.pgcon.org/2020/

pg_chameleon 2.0.12, a tool for replicating from MySQL to PostgreSQL, released.
https://pgchameleon.org/blog/2019/12/11/release-2012/

pgAdmin4 4.16, a web- and native GUI control center for PostgreSQL, released.
https://www.pgadmin.org/docs/pgadmin4/dev/release_notes_4_16.html

The German-speaking PostgreSQL Conference 2020 will take place on May 15, 2020
in Stuttgart. The CfP is open until February 3, 2020 at https://2020.pgconf.de/callforpapers/
https://2020.pgconf.de/

pitrery 2.4, a set of Bash scripts to manage PITR backups for PostgreSQL, released.
http://dalibo.github.io/pitrery/

== PostgreSQL Product News ==

== PostgreSQL Jobs for December ==

http://archives.postgresql.org/pgsql-jobs/2019-12/

== PostgreSQL Local ==

PGDay SF will take place on January 21, 2020 at the Swedish American Hall in San
Francisco.
https://2020.pgdaysf.org/

pgDay Israel 2020 will take place on March 19, 2020 in Tel Aviv.
The CfP is open through January 15, 2020.
http://pgday.org.il/

pgDay Paris 2020 will be held in Paris, France on March 26, 2020 at Espace
Saint-Martin. The CfP is open through December 31, 2019 at midnight, Paris time
at https://2020.pgday.paris/callforpapers/
https://2020.pgday.paris/

Nordic PGDay 2020 will be held in Helsinki, Finland at the Hilton Helsinki
Strand Hotel on March 24, 2020.  The CfP is open through December 31, 2019 at
https://2020.nordicpgday.org/cfp/

PGConf India 2020 will be on February 26-28, 2020 in Bengaluru, Karnataka.
http://pgconf.in/

PostgreSQL@SCaLE is a two day, two track event which takes place on
March 5-6, 2020, at Pasadena Convention Center, as part of SCaLE 18X.
https://www.socallinuxexpo.org/scale/18x/postgresscale

The German-speaking PostgreSQL Conference 2020 will take place on May 15, 2019
in Stuttgart.

== 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 PST8PDT to david@fetter.org.

== Applied Patches ==

Tom Lane pushed:

- Doc: improve documentation about run-time pruning's effects on EXPLAIN. Tatsuo
  Ishii complained that this para wasn't very intelligible. Try to make it
  better.  Discussion:
  https://postgr.es/m/20191207.200500.989741087350666720.t-ishii@sraoss.co.jp
  https://git.postgresql.org/pg/commitdiff/a395e21e989af0c2aab9dd1b1e0a1842ca42a063

- Improve isolationtester's timeout management. isolationtester.c had a
  hard-wired limit of 3 minutes per test step. It now emerges that this isn't
  quite enough for some of the slowest buildfarm animals.  This isn't the first
  time we've had to raise this limit (cf. 1db439ad4), so let's make it
  configurable.  This patch raises the default to 5 minutes, and introduces an
  environment variable PGISOLATIONTIMEOUT that can be set if more time is
  needed, following the precedent of PGCTLTIMEOUT.  Also, modify isolationtester
  so that when the timeout is hit, it explicitly reports having sent a cancel.
  This makes the regression failure log considerably more intelligible.  (In the
  worst case, a timed-out test might actually be reported as "passing" without
  this extra output, so arguably this is a bug fix in itself.)  In passing,
  update the README file, which had apparently not gotten touched when we added
  "make check" support here.  Back-patch to 9.6; older versions don't have
  comparable timeout logic.  Discussion:
  https://postgr.es/m/22964.1575842935@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/99351a8b5a3882ee5d131bd37d03a67ab07b4fea

- Fix race condition in our Windows signal emulation.
  pg_signal_dispatch_thread() responded to the client (signal sender) and
  disconnected the pipe before actually setting the shared variables that make
  the signal visible to the backend process's main thread. In the worst case, it
  seems, effective delivery of the signal could be postponed for as long as the
  machine has any other work to do.  To fix, just move the pg_queue_signal()
  call so that we do it before responding to the client.  This essentially makes
  pgkill() synchronous, which is a stronger guarantee than we have on Unix.
  That may be overkill, but on the other hand we have not seen comparable timing
  bugs on any Unix platform.  While at it, add some comments to this sadly
  underdocumented code.  Problem diagnosis and fix by Amit Kapila; I just added
  the comments.  Back-patch to all supported versions, as it appears that this
  can cause visible NOTIFY timing oddities on all of them, and there might be
  other misbehavior due to slow delivery of other signals.  Discussion:
  https://postgr.es/m/32745.1575303812@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/28e6a2fd6358c1b75ce2f4e7cb3fcff979dbe539

- In pg_ctl, work around ERROR_SHARING_VIOLATION on the postmaster log file. On
  Windows, we use CMD.EXE to redirect the postmaster's stdout/stderr into a log
  file.  CMD.EXE will open that file with non-sharing-friendly parameters, and
  the file will remain open for a short time after the postmaster has removed
  postmaster.pid.  This can result in an ERROR_SHARING_VIOLATION failure if we
  attempt to start a new postmaster immediately with the same log file (e.g.
  during "pg_ctl restart"). This seems to explain intermittent buildfarm
  failures we've been seeing on Windows machines.  To fix, just open and close
  the log file using our own pgwin32_open(), which will wait if necessary to
  avoid the failure.  (Perhaps someday we should stop using CMD.EXE, but that
  would be a far more complex patch, and it doesn't seem worth the trouble ...
  yet.)  Back-patch to v12.  This only solves the problem when frontend fopen()
  is redirected to pgwin32_fopen(), which has only been true since commit
  0ba06e0bf.  Hence, no point in back-patching further, unless we care to
  back-patch that change too.  Diagnosis and patch by Alexander Lakhin (bug
  #16154).  Discussion:
  https://postgr.es/m/16154-1ccf0b537b24d5e0@postgresql.org
  https://git.postgresql.org/pg/commitdiff/0da33c762b85aeada111aa1371c33ac6737f8396

- Fix tuple column count in pg_control_init(). Oversight in commit 2e4db241b.
  Nathan Bossart  Discussion:
  https://postgr.es/m/1B616360-396A-4482-AA28-375566C86160@amazon.com
  https://git.postgresql.org/pg/commitdiff/8729fa72483f8a9acf299508bb2cbae1aa9a29b8

- Use only one thread to handle incoming signals on Windows. Since its
  inception, our Windows signal emulation code has worked by running a main
  signal thread that just watches for incoming signal requests, and then spawns
  a new thread to handle each such request. That design is meant for servers in
  which requests can take substantial effort to process, and it's worth
  parallelizing the handling of requests.  But those assumptions are just bogus
  for our signal code. It's not much more than pg_queue_signal(), which is cheap
  and can't parallelize at all, plus we don't really expect lots of signals to
  arrive at the same backend at once.  More importantly, this approach creates
  failure modes that we could do without: either inability to spawn a new thread
  or inability to create a new pipe handle will risk loss of signals.  Hence,
  dispense with the separate per-signal threads and just service each request
  in-line in the main signal thread.  This should be a bit faster (for the
  normal case of one signal at a time) as well as more robust.  Patch by me;
  thanks to Andrew Dunstan for testing and Amit Kapila for review.  Discussion:
  https://postgr.es/m/4412.1575748586@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/16114f2ea0c0aba75d10b622797d31bcd296fadd

- Further adjust EXPLAIN's choices of table alias names. This patch causes
  EXPLAIN to always assign a separate table alias to the parent RTE of an append
  relation (inheritance set); before, such RTEs were ignored if not actually
  scanned by the plan.  Since the child RTEs now always have that same alias to
  start with (cf. commit 55a1954da), the net effect is that the parent RTE
  usually gets the alias used or implied by the query text, and the children all
  get that alias with "_N" appended.  (The exception to "usually" is if there
  are duplicate aliases in different subtrees of the original query; then some
  of those original RTEs will also have "_N" appended.)  This results in more
  uniform output for partitioned-table plans than we had before: the partitioned
  table itself gets the original alias, and all child tables have aliases with
  "_N", rather than the previous behavior where one of the children would get an
  alias without "_N".  The reason for giving the parent RTE an alias, even if it
  isn't scanned by the plan, is that we now use the parent's alias to qualify
  Vars that refer to an appendrel output column and appear above the Append or
  MergeAppend that computes the appendrel.  But below the append, Vars refer to
  some one of the child relations, and are displayed that way. This seems
  clearer than the old behavior where a Var that could carry values from any
  child relation was displayed as if it referred to only one of them.  While at
  it, change ruleutils.c so that the code paths used by EXPLAIN deal in Plan
  trees not PlanState trees.  This effectively reverts a decision made in commit
  1cc29fe7c, which seemed like a good idea at the time to make ruleutils.c
  consistent with explain.c.  However, it's problematic because we'd really like
  to allow executor startup pruning to remove all the children of an append node
  when possible, leaving no child PlanState to resolve Vars against.  (That's
  not done here, but will be in the next patch.)  This requires different
  handling of subplans and initplans than before, but is otherwise a pretty
  straightforward change.  Discussion:
  https://postgr.es/m/001001d4f44b$2a2cca50$7e865ef0$@lab.ntt.co.jp
  https://git.postgresql.org/pg/commitdiff/6ef77cf46e81f45716ec981cb08781d426181378

- Allow executor startup pruning to prune all child nodes. Previously, if the
  startup pruning logic proved that all child nodes of an Append or MergeAppend
  could be pruned, we still kept one, just to keep EXPLAIN from failing.  The
  previous commit removed the ruleutils.c limitation that required this kluge,
  so drop it.  That results in less-confusing EXPLAIN output, as per a complaint
  from Yuzuko Hosoya.  David Rowley  Discussion:
  https://postgr.es/m/001001d4f44b$2a2cca50$7e865ef0$@lab.ntt.co.jp
  https://git.postgresql.org/pg/commitdiff/5935917ce59e2e613ac7a4b54ed49a7b9f8f28ac

- Remove unstable test case added in commit 5935917ce. The buildfarm says this
  produces some unexpected output with force_parallel_mode = regress.  There's
  probably a bug underneath that, but for the moment just delete the test case
  to make the buildfarm green again.  (I now notice that the case had also
  failed to get updated to follow commit d52eaa094, which made plan_cache_mode =
  force_generic_plan prevail throughout partition_prune.sql; it was thereby
  managing to break a later test.  When/if we put this back in, *don't* include
  the SET and RESET commands.)
  https://git.postgresql.org/pg/commitdiff/776a2c887480977a4327108945364fb4d84a817f

- Add readfuncs.c support for AppendRelInfo. This is made necessary by the fact
  that commit 6ef77cf46 added AppendRelInfos to plan trees.  I'd concluded that
  this extra code was not necessary because we don't transmit that data to
  parallel workers ... but I forgot about -DWRITE_READ_PARSE_PLAN_TREES.  Per
  buildfarm.
  https://git.postgresql.org/pg/commitdiff/591d404b9cd2c562bfe7fe60d76988d49b5ba2b1

- Remove redundant function calls in timestamp[tz]_part(). The
  DTK_DOW/DTK_ISODOW and DTK_DOY switch cases in timestamp_part() and
  timestamptz_part() contained calls of timestamp2tm() that were fully redundant
  with the ones done just above the switch.  This evidently crept in during
  commit 258ee1b63, which relocated that code from another place where the calls
  were indeed needed.  Just delete the redundant calls.  I (tgl) noted that our
  test coverage of these functions left quite a bit to be desired, so extend
  timestamp.sql and timestamptz.sql to cover all the branches.  Back-patch to
  all supported branches, as the previous commit was. There's no real issue here
  other than some wasted cycles in some not-too-heavily-used code paths, but the
  test coverage seems valuable.  Report and patch by Li Japin; test case
  adjustments by me.  Discussion:
  https://postgr.es/m/SG2PR06MB37762CAE45DB0F6CA7001EA9B6550@SG2PR06MB3776.apcprd06.prod.outlook.com
  https://git.postgresql.org/pg/commitdiff/26ae3aa80e337261203ba4442452bed261ff9888

- Fix EXTRACT(ISOYEAR FROM timestamp) for years BC. The test cases added by
  commit 26ae3aa80 exposed an old oversight in timestamp[tz]_part: they didn't
  correct the result of date2isoyear() for BC years, so that we produced an
  off-by-one answer for such years. Fix that, and back-patch to all supported
  branches.  Discussion:
  https://postgr.es/m/SG2PR06MB37762CAE45DB0F6CA7001EA9B6550@SG2PR06MB3776.apcprd06.prod.outlook.com
  https://git.postgresql.org/pg/commitdiff/1a3efa1eb67ab752231a6fff2743a77ae55808d5

- Put back regression test case in a more robust form. This undoes my hurried
  commit 776a2c887, restoring the removed test case in a form that passes with
  or without force_parallel_mode = regress.  It turns out that
  force_parallel_mode = regress simply fails to mask the Worker lines that will
  be produced by EXPLAIN (ANALYZE, VERBOSE). I'd say that's a bug in that
  feature, as its entire alleged reason for existence is to make the EXPLAIN
  output the same.  It's certainly not a bug in the plan node pruning logic.
  Fortunately, this test case doesn't really need to use ANALYZE, so just drop
  that.  Discussion: https://postgr.es/m/18891.1576109690@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/22864f6e02f8fc19f6167442f13d1f917e36548e

- Modernize our readline API a tad. Prefer to call
  "rl_filename_completion_function" and "rl_completion_matches", rather than
  using the names without the rl_ prefix.  This matches Readline's
  documentation, and makes our code a little clearer about which names are
  external.  On platforms that only have the un-prefixed names (just some very
  ancient versions of libedit, AFAICT), reverse the direction of the
  compatibility macro definitions to match.  Also, remove our extern declaration
  of "filename_completion_function"; whatever libedit versions may have failed
  to declare that are surely dead and buried.  Discussion:
  https://postgr.es/m/23608.1576248145@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/5e7bedc5adba570b526d89746201481616756779

- Prevent overly-aggressive collapsing of joins to RTE_RESULT relations. The
  RTE_RESULT simplification logic added by commit 4be058fe9 had a flaw: it would
  collapse out a RTE_RESULT that is due to compute a PlaceHolderVar, and
  reassign the PHV to the parent join level, even if another input relation of
  the join contained a lateral reference to the PHV.  That can't work because
  the PHV would be computed too late. In practice it led to failures of internal
  sanity checks later in planning (either assertion failures or errors such as
  "failed to construct the join relation").  To fix, add code to check for the
  presence of such PHVs in relevant portions of the query tree.  Notably, this
  required refactoring range_table_walker so that a caller could ask to walk
  individual RTEs not the whole list.  (It might be a good idea to refactor
  range_table_mutator in the same way, if only to keep those functions looking
  similar; but I didn't do so here as it wasn't necessary for the bug fix.)
  This exercise also taught me that find_dependent_phvs(), as it stood, could
  only safely be used on the entire Query, not on subtrees. Adjust its API to
  reflect that; which in passing allows it to have a fast path for the common
  case of no PHVs anywhere.  Per report from Will Leinweber.  Back-patch to v12
  where the bug was introduced.  Discussion:
  https://postgr.es/m/CALLb-4xJMd4GZt2YCecMC95H-PafuWNKcmps4HLRx2NHNBfB4g@mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/6ea364e7e7d5f298fc965006caa6c228c743fe77

- Try to stabilize results of new tuplesort regression test. It appears that a
  concurrent autovacuum/autoanalyze run can cause changes in the plans expected
  by this test.  To prevent that, change the tables it uses to be temp tables
  --- there's no need for them to be permanent, and this should save a few
  cycles too.  Discussion: https://postgr.es/m/3244.1576160824@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/baa32ce28b39eccdf384e979dac5ad8be91ff44e

Noah Misch pushed:

- Document search_path security with untrusted dbowner or CREATEROLE. Commit
  5770172cb0c9df9e6ce27c507b449557e5b45124 wrote, incorrectly, that certain
  schema usage patterns are secure against CREATEROLE users and database owners.
  When an untrusted user is the database owner or holds CREATEROLE privilege, a
  query is secure only if its session started with SELECT
  pg_catalog.set_config('search_path', '', false) or equivalent. Back-patch to
  9.4 (all supported versions).  Discussion:
  https://postgr.es/m/20191013013512.GC4131753@rfd.leadboat.com
  https://git.postgresql.org/pg/commitdiff/fd5e16e782fc6cd829b27e2c83c623b8020e5774

Amit Kapila pushed:

- Fix typos in miscinit.c. Commit f13ea95f9e moved the description of
  postmaster.pid file contents from miscadmin.h to pidfile.h, but missed to
  update the comments in miscinit.c.  Author: Hadi Moshayedi Reviewed-by: Amit
  Kapila Backpatch-through: 10 Discussion:
  https://postgr.es/m/CAK=1=WpYEM9x3LGkaxgXaxeYQjnkdW8XLsxrYRTE2Gq-H83FMw@mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/2d0fdfaccec8b314895e026018874dcc5565b43e

Etsuro Fujita pushed:

- Fix handling of multiple AFTER ROW triggers on a foreign table.
  AfterTriggerExecute() retrieves a fresh tuple or pair of tuples from a
  tuplestore and then stores the tuple(s) in the passed-in slot(s) if
  AFTER_TRIGGER_FDW_FETCH, while it uses the most-recently-retrieved tuple(s)
  stored in the slot(s) if AFTER_TRIGGER_FDW_REUSE.  This was done correctly
  before 12, but commit ff11e7f4b broke it by mistakenly clearing the tuple(s)
  stored in the slot(s) in that function, leading to an assertion failure as
  reported in bug #16139 from Alexander Lakhin.  Also, fix some other issues
  with the aforementioned commit in passing:  * For tg_newslot, which is a slot
  added to the TriggerData struct by the   commit to store new updated tuples,
  it didn't ensure the slot was NULL   if there was no such tuple. * The commit
  failed to update the documentation about the trigger   interface.  Author:
  Etsuro Fujita Backpatch-through: 12 Discussion:
  https://postgr.es/m/16139-94f9ccf0db6119ec%40postgresql.org
  https://git.postgresql.org/pg/commitdiff/5a20b0219e7684788a1b63e812dd44b31361b259

- Remove extra parenthesis from comment.
  https://git.postgresql.org/pg/commitdiff/a41a1456c4a1040974939db23a81101a2f6ade6f

Álvaro Herrera pushed:

- Add backend-only appendStringInfoStringQuoted. This provides a mechanism to
  emit literal values in informative messages, such as query parameters.  The
  new code is more complex than what it replaces, primarily because it wants to
  be more efficient. It also has the (currently unused) additional optional
  capability of specifying a maximum size to print.  The new function lives out
  of common/stringinfo.c so that frontend users of that file need not pull in
  unnecessary multibyte-encoding support code.  Author: Álvaro Herrera and
  Alexey Bashtanov, after a suggestion from Andres Freund Reviewed-by: Tom Lane
  Discussion:
  https://postgr.es/m/20190920203905.xkv5udsd5dxfs6tr@alap3.anarazel.de
  https://git.postgresql.org/pg/commitdiff/6cafde1bd43f1c28b044953cac2f2999eb425b22

- Emit parameter values during query bind/execute errors. This makes such log
  entries more useful, since the cause of the error can be dependent on the
  parameter values.  Author: Alexey Bashtanov, Álvaro Herrera Discussion:
  https://postgr.es/m/0146a67b-a22a-0519-9082-bc29756b93a2@imap.cc Reviewed-by:
  Peter Eisentraut, Andres Freund, Tom Lane
  https://git.postgresql.org/pg/commitdiff/ba79cb5dc841104cf4810b5c23af4f881079dbb5

- (Blindly) tweak new test regex. gcc-based Windows buildfarm animals are not
  happy about a multiline regular expression I added recently.  Try to
  accomodate; existing pg_basebackup tests suggest that \n should work instead
  of a bare newline, but throw in \r also.  This being perl, TIMTOWTDI. Also
  remove the pointless $ at the end of the pattern, for extra luck.  (If this
  doesn't work, I'll probably just split the regex in two.)  Per buildfarm
  members jacana and fairywren.  Discussion:
  https://postgr.es/m/3562.1576161217@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/8ed428dc977f6d3e454892ddca089f17e150384f

Peter Eisentraut pushed:

- Cosmetic cleaning of pg_config.h.win32. Clean up some comments (some generated
  by old versions of autoconf) and some random ordering differences, so it's
  easier to diff this against the default pg_config.h or pg_config.h.in.  Remove
  LOCALEDIR handling from pg_config.h.win32 altogether because it's already in
  pg_config_paths.h.
  https://git.postgresql.org/pg/commitdiff/877b61e9ce95934c71a9c01614db4be1b395fff6

- Fix output of Unicode normalization test. Several off-by-more-than-one errors
  caused the output in case of a test failure to be truncated and
  unintelligible.  Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion:
  https://www.postgresql.org/message-id/flat/6a7a8516-7d11-8fbd-0e8b-eadb4f0679eb%402ndquadrant.com
  https://git.postgresql.org/pg/commitdiff/b802412106e82ccf1aef36a4984e321082c122cb

- Remove ATPrepSetStatistics. It was once possible to do ALTER TABLE ... SET
  STATISTICS on system tables without allow_sytem_table_mods.  This was changed
  apparently by accident between PostgreSQL 9.1 and 9.2, but a code comment
  still claimed this was possible.  Without that functionality, having a
  separate ATPrepSetStatistics() is useless, so use the generic
  ATSimplePermissions() instead and move the remaining custom code into
  ATExecSetStatistics().  Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion:
  https://www.postgresql.org/message-id/flat/cc8d2648-a0ec-7a86-13e5-db473484e19e%402ndquadrant.com
  https://git.postgresql.org/pg/commitdiff/105eb360f2513523d221302b2d52880a14afae34

Michaël Paquier pushed:

- Fix some compiler warnings with timestamp parsing in formatting.c. gcc-7 used
  with a sufficient optimization level complains about warnings around
  do_to_timestamp() regarding the initialization and handling of some of its
  variables.  Recent commits 66c74f8 and d589f94 made things made the interface
  more confusing, so document which variables are always expected and initialize
  properly the optional ones when they are set.  Author: Andrey Lepikhov,
  Michael Paquier Discussion:
  https://postgr.es/m/a7e28b83-27b1-4e1c-c76b-4268c4b785bc@postgrespro.ru
  https://git.postgresql.org/pg/commitdiff/c341c7d391e256f80cfbae53b4f55278bffca699

- Fix memory leak when initializing DH parameters in backend. When loading DH
  parameters used for the generation of ephemeral DH keys in the backend, the
  code has never bothered releasing the memory used for the DH information
  loaded from a file or from libpq's default.  This commit makes sure that the
  information is properly free()'d.  Note that as SSL parameters can be
  reloaded, this can cause an accumulation of memory leaked.  As the leak is
  minor, no backpatch is done.  Reported-by: Dmitry Uspenskiy Discussion:
  https://postgr.es/m/16160-18367e56e9a28264@postgresql.org
  https://git.postgresql.org/pg/commitdiff/e0e569e1d192c3fed942257302f24b550cf982f4

- Remove duplicated progress reporting during heap scan of VACUUM. This has been
  introduced by c16dc1a since progress reporting for VACUUM has been added.  As
  this issue just causes some extra work and is harmless, no backpatch is done.
  Author: Justin Pryzby Discussion:
  https://postgr.es/m/20191213030831.GT2082@telsasoft.com
  https://git.postgresql.org/pg/commitdiff/e5a02e0fc68bd57048f2c74a89f5412dbf87015e

Heikki Linnakangas pushed:

- Fix crash when a page was split during GiST index creation. The bug was
  similar to the one that was fixed in commit 22251686f0. When we split page X
  and insert the downlink for the new page, the parent page might also need to
  be split. When that happens, the downlink offset number we remembered for X is
  no longer valid. We correctly called gistFindCorrectParent() to re-find it,
  but gistFindCorrectParent() doesn't do anything if the LSN of the page hasn't
  changed, and we stopped updating LSNs during index build in commit 9155580fd5.
  The buggy codepath was taken if the page was split into three or more pages,
  and inserting the downlink caused the parent page to split. To fix, explicitly
  mark the downlink offset number as invalid, to force gistFindCorrectParent()
  to re-find it.  Fixes bug #16134 reported by Alexander Lakhin, reported again
  as #16162 by Andreas Kunert. Thanks to Jeff Janes, Tom Lane and Tomas Vondra
  for debugging. Backpatch to v12, where we stopped WAL-logging during index
  build.  Discussion:
  https://www.postgresql.org/message-id/16134-0423f729671dec64%40postgresql.org
  Discussion:
  https://www.postgresql.org/message-id/16162-45d21b7b6c1a3105%40postgresql.org
  https://git.postgresql.org/pg/commitdiff/a7ee7c85132221ff7231b6f910915a1b3ce1ecbc

Thomas Munro pushed:

- Don't use _mdfd_getseg() in mdsyncfiletag(). _mdfd_getseg() opens all segments
  up to the requested one.  That causes problems for mdsyncfiletag(), if
  mdunlinkfork() has already unlinked other segment files.  Open the file we
  want directly by name instead, if it's not already open.  The consequence of
  this bug was a rare panic in the checkpointer, made more likely if you
  saturated the sync request queue so that the SYNC_FORGET_REQUEST messages for
  a given relation were more likely to be absorbed in separate cycles by the
  checkpointer.  Back-patch to 12.  Defect in commit 3eb77eba.  Author: Thomas
  Munro Reported-by: Justin Pryzby Discussion:
  https://postgr.es/m/20191119115759.GI30362%40telsasoft.com
  https://git.postgresql.org/pg/commitdiff/7bb3102cea02101efcbb4c4fba3fdd452a52bdab

- Fix mdsyncfiletag(), take II. The previous commit failed to consider that
  FileGetRawDesc() might not return a valid fd, as discovered on the build farm.
  Switch to using the File interface only.  Back-patch to 12, like the previous
  commit.
  https://git.postgresql.org/pg/commitdiff/7c85be08a2d404ec2a1a6a3b089e7f08d62e5db8

== Pending Patches ==

Michaël Paquier sent in another revision of a patch to rework the manipulation
and structure of attribute mappings.

Peter Eisentraut sent in a patch to support ALTER TABLE ... DROP EXPRESSION ...
per the standard.

Amit Kapila sent in two more revisions of a patch to delete empty pages in each
pass during GIST VACUUM.

Kyotaro HORIGUCHI sent in another revision of a patch to rework the WAL-skipping
optimization.

Amul Sul sent in another revision of a patch to improve the partition-matching
algorithm for partition-wise JOINs.

Pavel Stěhule sent in two more revisions of a patch to add min_scale() and
trim_scale() functions for NUMERIC.

Ranier Vilela, Mark Dilger, and Michaël Paquier traded patches to un-shadow some
variable names.

Suraj Kharage and Rushabh Lathia traded patches to implement backup manifests
and some utilities to use them.

Ibrar Ahmed sent in two revisions of a patch to improve the management of memory
in VACUUM by using a list instead of a fixed size array and allocating the
memory in chunks.

Robert Haas sent in another revision of a patch to move interrupting-handling
code into subroutines, use PostgresSigHupHandler in more places, partially
deduplicate interrupt handling for background processes, and extend the
ProcSignal mechanism to support barriers.

Peter Eisentraut sent in a patch to remove support for Python versions older
than 2.6.

Justin Pryzby sent in a patch to make a "Cost" structure and allow EXPLAIN to
show its members.

Peter Eisentraut sent in another revision of a patch to remove
ATPrepSetStatistics.

Jiankang Liu sent in a patch to ensure that Walreceiver is completely started
before shutting down it on the standby server.

Andres Freund sent in a patch to implement varint.

Tomáš Vondra sent in a patch to fix a bug in pg_stat_activity's tracking of
walsender processes where xact_start is only updated at the very beginning when
the walsender starts (so it's almost exactly equal to backend_start) and then
just flips between NULL and that value.

Tomáš Vondra and Adam Lee traded patches to implement memory-bounded hash
aggregation.

Dilip Kumar and Amit Kapila traded patches to change an overly strict Assert in
TransactionGroupUpdateXidStatus.

Robert Haas sent in a patch to allow the use of simplehash without MemoryContext
and leverage that to enable its use in front-end code.

Vigneshwaran C sent in a patch to reorder buffer crash while aborting old
transactions.

Leif Gunnar Erlandsen sent in another revision of a patch to pause recovery if
pitr target not reached.

Konstantin Knizhnik sent in another revision of a patch to add a
pg_stat_wal_activity view.

Peter Eisentraut sent in a patch to add an .editorconfig file.

Julien Rouhaud sent in another revision of a patch to support collation
versioning.

Robert Haas sent in a patch to remove misuse of cancel_before_shmem_exit.

Andrey V. Lepikhov sent in two revisions of a patch to skip the scan of the
outer subtree if the inner side of a NestedLoop node is guaranteed empty.

Justin Pryzby sent in three more revisions of a patch to add a vacuum errcontext
to show the block being processed and use same to do that showing.

Peter Eisentraut sent in a patch to add support for other normal forms to the
Unicode normalization API, and add SQL functions for Unicode normalization.

David Fetter sent in two revisions of a patch to make it possible to set
host(no)ssl lines via initdb.

Asif Rehman sent in another revision of a patch to implement parallel WAL-based
backup.

Peter Eisentraut sent in a patch to support MSYS2 directly.

Nathan Bossart sent in two revisions of a patch to fix a bug wherein archive
status ".ready" files could be created too early.

Amit Khandekar and Amit Kapila traded patches to use vfd for logrep.

Peter Geoghegan sent in another revision of a patch to add deduplication to
nbtree.

Vigneshwaran C sent in a patch to fix subscriber invalid memory access on DDL.

Josef Šimánek sent in a patch to improve the documentation of REINDEX options.

Etsuro Fujita sent in a patch to clean up the partition join test.

Kirk Jamison sent in another revision of a patch to optimize dropping of
relation buffers using a dlist.

Peter Eisentraut sent in a patch to generate pg_config.h from pg_config.h.in on
Windows and remove pg_config.h.win32, as it's no longer needed.

Jeff Janes sent in a patch to add a GUC, enable_singleseqscan, that does what's
on the label.

Tom Lane sent in another revision of a patch to prevent COPY's tab completion
from stripping needed quotes.

Tom Lane sent in another revision of a patch to fix some multi-operations bugs
in ALTER TABLE.

Peter Eisentraut sent in a patch to have logical replication subscriber fire
column triggers.

Álvaro Herrera sent in a patch to Demote an xlog.c variable from global to
local.

Pavel Stěhule sent in another revision of a patch to implement schema variables.

Justin Pryzby sent in a patch to make pg_ls_tmpdir to show directories.

Michaël Paquier sent in a patch to fix a recently introduced infelicity between
query cancellation and \watch in psql.

Tom Lane sent in a patch to ensure that ensure invisible Gathers have invisible
workers.



pgsql-announce by date:

Previous
From: Britt Cole
Date:
Subject: 2Q PGConf 2019 Wrap Up
Next
From: Lætitia Avrot
Date:
Subject: FOSDEM PGDay and Devroom announcement!