Обсуждение: == PostgreSQL Weekly News - August 25, 2019 ==


== PostgreSQL Weekly News - August 25, 2019 ==

David Fetter
== PostgreSQL Weekly News - August 25, 2019 ==

PGConf India 2020 will be on February 26-28, 2020 in Bengaluru, Karnataka.

== PostgreSQL Product News ==

pg_partman 4.2.0, a management system for partitioned tables, released.

pgAdmin4 4.12, a web- and native GUI control center for PostgreSQL, released.

== PostgreSQL Jobs for August ==


== PostgreSQL Local ==

The first Austrian pgDay, will take place September 6, 2019 at the Hilton Garden
Inn in Wiener Neustadt.

PostgresOpen will be September 11th - 13th, 2019 in Orlando, Florida at the
Rosen Centre Hotel.

PostgresConf South Africa 2019 will take place in Johannesburg on October 8-9, 2019

PostgreSQL Conference Europe 2019 will be held on October 15-18, 2019 in Milan,

2Q PGConf 2019 will be held December 4 & 5 in Chicago.
The CFP is open through August 30, 2019.

pgDay Paris 2020 will be held in Paris, France on March 26, 2020
at Espace Saint-Martin.

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

PGConf India 2020 will be on February 26-28, 2020 in Bengaluru, Karnataka.

== 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 .

== Applied Patches ==

Tom Lane pushed:

- Disallow changing an inherited column's type if not all parents changed. If a
  table inherits from multiple unrelated parents, we must disallow changing the
  type of a column inherited from multiple such parents, else it would be out of
  step with the other parents.  However, it's possible for the column to
  ultimately be inherited from just one common ancestor, in which case a change
  starting from that ancestor should still be allowed.  (I would not be excited
  about preserving that option, were it not that we have regression test cases
  exercising it already ...)  It's slightly annoying that this patch looks
  different from the logic with the same end goal in renameatt(), and more
  annoying that it requires an extra syscache lookup to make the test.  However,
  the recursion logic is quite different in the two functions, and a
  back-patched bug fix is no place to be trying to unify them.  Per report from
  Manuel Rigger.  Back-patch to 9.5.  The bug exists in 9.4 too (and doubtless
  much further back); but the way the recursion is done in 9.4 is a good bit
  different, so that substantial refactoring would be needed to fix it in 9.4.
  I'm disinclined to do that, or risk introducing new bugs, for a bug that has
  escaped notice for this long.  Discussion:

- Fix failure-to-compile-standalone in ecpg's dt.h. This has to have <time.h>,
  or the references to "struct tm" don't mean what they should.  We have some
  other recently-introduced issues of the same ilk, but this one seems old.  No
  backpatch though, as it's only a latent problem for most purposes.

- Fix failure-to-compile-standalone in scripts_parallel.h. Needs libpq-fe.h for
  references to PGConn.  Discussion:

- Fix incidental warnings from cpluspluscheck. Remove use of "register" keyword
  in hashfn.c.  It's obsolescent according to recent C++ compilers, and no
  modern C compiler pays much attention to it either.  Also fix one cosmetic
  warning about signed vs unsigned comparison.  Discussion:

- Avoid conflicts with library versions of inet_net_ntop() and friends. Prefix
  inet_net_ntop and sibling routines with "pg_" to ensure that they aren't
  mistaken for C-library functions.  This fixes warnings from cpluspluscheck on
  some platforms, and should help reduce reader confusion everywhere, since our
  functions aren't exactly interchangeable with the library versions (they may
  have different ideas about address family codes).  This shouldn't be fixing
  any actual bugs, unless somebody's linker is misbehaving, so no need to
  back-patch.  Discussion: https://postgr.es/m/

- Use zic's new "-b slim" option to generate smaller timezone files. IANA tzcode
  release 2019b adds an option that tells zic not to emit the old 32-bit section
  of the timezone files, and to skip some other space-wasting hacks needed for
  compatibility with old timezone client libraries.  Since we only expect our
  own code to use the timezone data we install, and our code is up-to-date with
  2019b, there's no apparent reason not to generate the smallest possible files.
  Unfortunately, while the individual zone files do get significantly smaller in
  many cases, they were not that big to begin with; which means that no real
  space savings ensues on filesystems that don't optimize small files.  (For
  instance, on ext4 with 4K block size, "du" says the installed timezone tree is
  the same size as before.) Still, it seems worth making the change, if only
  because this is presumably the wave of the future.  At the very least, we'll
  save some cycles while reading a zone file.  But given the marginal value and
  the fact that this is a new code path, it doesn't seem worth the risk of
  back-patching this change into stable branches.  Hence, unlike most of our
  timezone-related changes, apply to HEAD only.  Discussion:

- Add "headerscheck" script to test header-file compilability under C. We
  already had "cpluspluscheck", which served the dual purposes of verifying that
  headers compile standalone and that they compile as C++. However, C++
  compilers don't have the exact same set of error conditions as C compilers, so
  this doesn't really prove that a header will compile standalone as C.  Hence,
  add a second script that's largely similar but runs the C compiler not C++.
  Also add a bit more documentation than the none-at-all we had before.
  Discussion: https://postgr.es/m/

- Restore json{b}_populate_record{set}'s ability to take type info from AS. If
  the record argument is NULL and has no declared type more concrete than
  RECORD, we can't extract useful information about the desired rowtype from it.
  In this case, see if we're in FROM with an AS clause, and if so extract the
  needed rowtype info from AS.  It worked like this before v11, but commit
  37a795a60 removed the behavior, reasoning that it was undocumented,
  inefficient, and utterly not self-consistent.  If you want to take type info
  from an AS clause, you should be using the json_to_record() family of
  functions not the json_populate_record() family.  Also, it was already the
  case that the "populate" functions would fail for a null-valued RECORD input
  (with an unfriendly "record type has not been registered" error) when there
  wasn't an AS clause at hand, and it wasn't obvious that that behavior wasn't
  OK when there was one.  However, it emerges that some people were depending on
  this to work, and indeed the rather off-point error message you got if you
  left off AS encouraged slapping on AS without switching to the
  json_to_record() family.  Hence, put back the fallback behavior of looking for
  AS.  While at it, improve the run-time error you get when there's no place to
  obtain type info; we can do a lot better than "record type has not been
  registered". (We can't, unfortunately, easily improve the parse-time error
  message that leads people down this path in the first place.)  While at it, I
  refactored the code a bit to avoid duplicating the same logic in several
  different places.  Per bug #15940 from Jaroslav Sivy.  Back-patch to v11 where
  the current coding came in.  (The pre-v11 deficiencies in this area aren't
  regressions, so we'll leave those branches alone.)  Patch by me, based on
  preliminary analysis by Dmitry Dolgov.  Discussion:

- Remove unnecessary test dependency on the contents of pg_pltemplate. Using
  pg_pltemplate as test data was probably not very forward-looking, considering
  we've had many discussions around removing that catalog altogether.  Use a
  nearby temp table instead, to make these two test scripts more self-contained.
  This is a better test case anyway, since it exercises the scenario where the
  entries in the anyarray column actually vary in type intra-query.

- Back off output precision in circle.sql regression test. We were setting
  extra_float_digits = 0 to avoid platform-dependent output in this test, but
  that's still able to expose platform-specific roundoff behavior in some new
  test cases added by commit a3d284485, as reported by Peter Eisentraut.  Reduce
  it to -1 to hide that.  (Over in geometry.sql, we're using -3, which is an
  ancient decision dating to 337f73b1b.  I wonder whether that's overkill now.
  But there's probably little value in trying to change it.)  Back-patch to v12
  where a3d284485 came in; there's no evidence that we have any
  platform-dependent issues here before that.  Discussion:

- Avoid platform-specific null pointer dereference in psql. POSIX permits
  getopt() to advance optind beyond argc when the last argv entry is an option
  that requires an argument and hasn't got one. It seems that no major platforms
  actually do that, but musl does, so that something like "psql -f" would crash
  with that libc. Add a check that optind is in range before trying to look at
  the possibly-bogus option.  Report and fix by Quentin Rameau.  Back-patch to
  all supported branches.  Discussion:

Michaël Paquier pushed:

- Fix inconsistencies and typos in the tree, take 11. This fixes various typos
  in docs and comments, and removes some orphaned definitions.  Author:
  Alexander Lakhin Discussion:

- Fix tab completion for CREATE TYPE in psql. Oversight in 7bdc655.  Author:
  Alexander Lakhin Discussion:

- Doc: Improve wording of multiple places in documentation. This has been found
  during its translation.  Author: Liudmila Mantrova Discussion:
  Backpatch-through: 12

- Fix compilation failure of vacuumdb and reindexdb with OpenBSD. FD_SETSIZE is
  included in sys/select.h per POSIX, and this header inclusion has been moved
  to scripts_parallel.c as of 5f38403 without moving the variable, causing a
  compilation failure on recent versions of OpenBSD (6.6 was the version used in
  the report).  In order to take care of the failure, move FD_SETSIZE directly
  to scripts_parallel.c with a wrapper controlling the maximum number of
  parallel slots supported, based on a suggestion by Andres Freund.  While on
  it, reduce the maximum number to be less than FD_SETSIZE, leaving some room
  for stdin, stdout and such as they consume some file descriptors.  The
  buildfarm did not complain about that, as it happens to only be an issue on
  recent versions of OpenBSD and there is no coverage in this area.  51c3e9f
  fixed a similar set of issues.  Bug: #15964 Reported-by: Sean Farrell
  Discussion: https://postgr.es/m/

- Doc: Remove mention to "Visual Studio Express 2019". The "Express" flavor of
  Visual Studio exists up to 2017, and the documentation referred to "Express"
  for Visual Studio 2019.  Author: Takuma Hoshiai Discussion:
  Backpatch-through: 9.4

- Improve documentation of pageinspect. This adds a section for heap-related
  functions.  These were previously mixed with functions having a more general
  purpose, leading to confusion.  While on it, add a query example for
  fsm_page_contents.  Backpatch down to 10, where b5e3942 introduced the
  subsections for function types in pageinspect documentation.  Author: Masahiko
  Sawada Discussion:
  Backpatch-through: 10

- Remove dry-run mode from isolationtester. The original purpose of the dry-run
  mode is to be able to print all the possible permutations from a spec file,
  but it has become less useful since isolation tests has improved regarding
  deadlock detection as one step not wanted by the author could block
  indefinitely now (originally the step blocked would have been detected rather
  quickly).  Per discussion, let's remove it.  Author: Michael Paquier
  Reviewed-by: Asim Praveen, Melanie Plageman Discussion:

- Detect unused steps in isolation specs and do some cleanup. This is useful for
  developers to find out if an isolation spec is over-engineered or if it needs
  more work by warning at the end of a test run if a step is not used,
  generating a failure with extra diffs.  While on it, clean up all the specs
  which include steps not used in any permutations to simplify them.  Author:
  Michael Paquier Reviewed-by: Asim Praveen, Melanie Plageman Discussion:

- Do more cleanup of isolation tests for test_decoding. 989d23b has caused its
  tests to be broken as the module defines unused steps, turning the buildfarm

Peter Eisentraut pushed:

- doc: Fix image use in PDF build with vpath. In a vpath build, we need to point
  to the source directory to allow FOP to find the images.

- Clean up some SCRAM attribute processing. Correct the comment for
  read_any_attr().  Give a clearer error message when parsing at the end of the
  string, when the client-final-message does not contain a "p" attribute (for
  some reason).  Reviewed-by: Michael Paquier <> Discussion:

- Remove master/slave usage from plpgsql tests. Author: Dagfinn Ilmari Mannsåker
  <> Discussion:

- Remove configure detection of crypt(). crypt() hasn't been needed since crypt
  detection was removed from PostgreSQL, so these configure checks are not
  necessary.  Reviewed-by: Tom Lane <> Discussion:

- Make SQL/JSON error code names match SQL standard. There were some minor
  differences that didn't seem necessary.  Discussion:

- Update SQL conformance information. T612 has been fully supported since the
  major window function enhancements in PostgreSQL 11, but it wasn't updated at
  the time.

Álvaro Herrera pushed:

- Replace genetic algorithm ASCII-art with a real figure. Author: Jürgen Purtz
  Discussion: https://postgr.es/m/

- Fix bogus comment. Author: Alexander Lakhin Discussion:

- Fix typo. In early development patches, "replication origins" were called
  "identifiers"; almost everything was renamed, but these references to the old
  terminology went unnoticed.  Reported-by: Craig Ringer

Andres Freund pushed:

- Add fmgr.h include to selfuncs.h. Necessary after fb3b098f. That previously
  escaped notice, because all including sites already include fmgr.h some other
  way.  Reported-By: Tom Lane Author: Andres Freund Discussion:

Peter Geoghegan pushed:

- Update comments on nbtree stack struct. Adjust the struct comment that
  describes how page splits use their descent stack to cascade up the tree from
  the leaf level.  In passing, fix up some unrelated nbtree comments that had
  typos or were obsolete.

- Explain subtlety in nbtree locking protocol. The Postgres approach to coupling
  locks during an ascent of the tree is slightly different to the approach taken
  by Lehman and Yao.  Add a new paragraph to the "Differences to the Lehman &
  Yao algorithm" section of the nbtree README that explains the similarities and

Thomas Munro pushed:

- Don't rely on llvm::make_unique. Bleeding-edge LLVM has stopped supplying
  replacements for various C++14 library features, for people on older C++
  versions.  Since we're not ready to require C++14 yet, just use plain old new
  instead of make_unique.  As revealed by buildfarm animal seawasp.  Back-patch
  to 11.  Reviewed-by: Andres Freund Discussion:

== Pending Patches ==

Tom Lane sent in a patch to add an amcheckmembers callback.

Juan José Santamaría Flecha sent in two revisions of a patch to allow to_date()
and to_timestamp() to accept localized names.

Alexander Korotkov sent in another revision of a patch to improve checking for
missing parent links in nbtree.

Masahiko Sawada sent in another revision of a patch to add a RESUME option to
VACUUM and autovacuum.

Alexander Lakhin sent in a patch to add a tool for checking unique spellings.

Alexander Lakhin sent in another revision of a patch to fix typos and spelling

John Naylor and Binguo Bao traded patches to de-TOAST using an iterator.

Surafel Temesgen sent in two more revisions of a patch to add FETCH FIRST ...

Michaël Paquier sent in a patch to add common/logging.h to vacuumlo and

Peter Eisentraut sent in a patch to add the option to use ICU as the global
collation provider.

Konstantin Knizhnik sent in another revision of a patch to implement global
temporary tables.

Anastasia Lubennikova sent in a patch to attempt to check proc signatures and
ACL in pg_upgrade.

Robert Haas and Thomas Munro traded patches to clean up orphaned files using
undo logs.

Sergei Kornilov sent in two more revisions of a patch to change the ereport
level for QueuePartitionConstraintValidation.

Jeff Davis sent in another revision of a patch to add a 'channel_binding' libpq

Tom Lane sent in a patch to remove pg_pltemplate and create "trustable"

Melanie Plageman sent in another revision of a patch to test additional
speculative conflict scenarios.

Kyotaro HORIGUCHI sent in another revision of a patch to add a TAP test for the
copy-truncation optimization, fix the WAL-skipping feature, and rename
smgrDoPendingDeletes to smgrDoPendingOperations.

Konstantin Knizhnik sent in two revisions of a patch to make vacuum for logical
replication more efficient.

Anastasia Lubennikova sent in another revision of a patch to implement
deduplication in nbtree.

Asif Rehman sent in a WIP patch to parallelize pg_basebackup.

Konstantin Knizhnik sent in three revisions of a patch to reduce the overhead of

Shenhao Wang sent in a patch to add tab completion for CREATE OR REPLACE in

Michaël Paquier sent in a patch to refactor the connection with password prompt
loop for frontends.

Surafel Temesgen sent in a patch to remove a skip header from a loop in COPY

Heikki Linnakangas sent in another revision of a patch to refactor the
XlogReaderState callback.

Asim Praveen sent in a patch to implement a fault injection framework.

Paul Guo sent in another revision of a patch to skip copydir() if either src
directory or dst directory is missing due to re-redoing create database but the
tablespace is dropped.

Heikki Linnakangas sent in a patch to fix an overflow check and comment in GIN
posting list encoding.

Movead Li sent in a patch to increase regression test coverage.

Michaël Paquier sent in another revision of a patch to add hooks for session
start and end.

Alexander Kukushkin sent in a patch to ensure that pg_rewind isn't thwarted by a
statement_timeout setting that's too low.

Masahiko Sawada sent in two more revisions of a patch to introduce
heap_infomask_flags to decode infomask and infomask2.

Fabien COELHO sent in two more revisions of a patch to shorten the pg_checksums
--help synopsis.

Thomas Munro sent in a patch to avoid unnecessary copying in tqueue.c.

Peter Eisentraut sent in another revision of a patch to use explicit_bzero.

Tom Lane sent in a patch to tighten up config file inclusions.

Tom Lane sent in a patch to handle dead-end child crash better.

Peter Eisentraut and Ibrar Ahmed traded patches to ensure that pg_upgrade and
oid2name error out on too many command line arguments.