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

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - August 25, 2019 ==
Date: 2019-08-25 20:22:49
Message-ID: 20190825202249.GA4766@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

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

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

== PostgreSQL Product News ==

pg_partman 4.2.0, a management system for partitioned tables, released.
https://github.com/pgpartman/pg_partman

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

== PostgreSQL Jobs for August ==

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

== PostgreSQL Local ==

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

PostgresOpen will be September 11th - 13th, 2019 in Orlando, Florida at the
Rosen Centre Hotel.
https://2019.postgresopen.org/

PostgresConf South Africa 2019 will take place in Johannesburg on October 8-9, 2019
https://postgresconf.org/conferences/SouthAfrica2019

PostgreSQL Conference Europe 2019 will be held on October 15-18, 2019 in Milan,
Italy.
https://2019.pgconf.eu/

2Q PGConf 2019 will be held December 4 & 5 in Chicago.
The CFP is open through August 30, 2019.
https://www.2qpgconf.com/

pgDay Paris 2020 will be held in Paris, France on March 26, 2020
at Espace Saint-Martin.
http://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 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(at)fetter(dot)org(dot)

== 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:
https://postgr.es/m/CA+u7OA4qogDv9rz1HAb-ADxttXYPqQdUdPY_yd4kCzywNxRQXA@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/4d4c66addfd4da51b0e4be456d6109bea4539fac

- 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.
https://git.postgresql.org/pg/commitdiff/5c66e99178c2f72042034cceb6bc4902650a2608

- Fix failure-to-compile-standalone in scripts_parallel.h. Needs libpq-fe.h for
references to PGConn. Discussion:
https://postgr.es/m/17463.1566153454@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/5f110933e1145ad40116cf3c67a454cb6cb71cc2

- 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:
https://postgr.es/m/20518.1559494394@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/232720be9b6412ec2b6bee405299bcbbbe700f0b

- 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/20518.1559494394@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/927f34ce8a215c8b254136f710cca9ca4da1352c

- 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:
https://postgr.es/m/24998.1563403327@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/a12079109686e75c833b0b04925af8cb2fa011c0

- 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/14803.1566175851@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/55ea109188474dae22d90f743d7189a8bdf94d49

- 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:
https://postgr.es/m/15940-2ab76dc58ffb85b6@postgresql.org
https://git.postgresql.org/pg/commitdiff/e136a0d8ca31d1c94b3f2868ae0e735b8d9ff12f

- 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.
https://git.postgresql.org/pg/commitdiff/bbd93667bde56d3900add55479759f33d20ece1e

- 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:
https://postgr.es/m/15551268-e224-aa46-084a-124b64095ee3@2ndquadrant.com
https://git.postgresql.org/pg/commitdiff/faee5a12ecf13190d7ca11d6dcc7078e494f46ca

- 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:
https://postgr.es/m/20190825100617.GA6087@fifth.space
https://git.postgresql.org/pg/commitdiff/6338fa3e715ad1cb12e0760bf73ffc2a906098ea

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:
https://postgr.es/m/5da8e325-c665-da95-21e0-c8a99ea61fbf@gmail.com
https://git.postgresql.org/pg/commitdiff/c96581abe418a3bf64b643aa4e27091d1eaea1c1

- Fix tab completion for CREATE TYPE in psql. Oversight in 7bdc655. Author:
Alexander Lakhin Discussion:
https://postgr.es/m/5da8e325-c665-da95-21e0-c8a99ea61fbf@gmail.com
https://git.postgresql.org/pg/commitdiff/71851e9ab7ac8409fabc6f64273149aa71fa29f5

- Doc: Improve wording of multiple places in documentation. This has been found
during its translation. Author: Liudmila Mantrova Discussion:
https://postgr.es/m/CAEkD-mDJHV3bhgezu3MUafJLoAKsOOT86+wHukKU8_NeiJYhLQ@mail.gmail.com
Backpatch-through: 12
https://git.postgresql.org/pg/commitdiff/0431a787469265776eeb9a472beb3457d2990edb

- 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/15964-c1753bdfed722e04@postgresql.org
https://git.postgresql.org/pg/commitdiff/56f8f9624ba050c7c47dd97547b7fafb866f2bdd

- 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:
https://postgr.es/m/20190820120231.f905542e685140258ca73d82@sraoss.co.jp
Backpatch-through: 9.4
https://git.postgresql.org/pg/commitdiff/37093766b2f489128564774995f02d4e7d00dccd

- 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:
https://postgr.es/m/CAD21AoDyM7E1+cK3-aWejxKTGC-wVVP2B+RnJhN6inXyeRmqzw@mail.gmail.com
Backpatch-through: 10
https://git.postgresql.org/pg/commitdiff/292ae8af79b4f1b09a327d39e80ef70943a28194

- 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:
https://postgr.es/m/20190819080820.GG18166@paquier.xyz
https://git.postgresql.org/pg/commitdiff/9903338b5ea59093d77cfe50ec0b1c22d4a7d843

- 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:
https://postgr.es/m/20190819080820.GG18166@paquier.xyz
https://git.postgresql.org/pg/commitdiff/989d23b04beac0c26f44c379b04ac781eaa4265e

- 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
red.
https://git.postgresql.org/pg/commitdiff/06fdc4e4d33c40dbf886565336574da5566878f4

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.
https://git.postgresql.org/pg/commitdiff/a407012c07844b5d81012d6960c4b2ec11d6af9c

- 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 <michael(at)paquier(dot)xyz> Discussion:
https://www.postgresql.org/message-id/flat/2fb8a15b-de35-682d-a77b-edcc9c52fa12%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/db1f28917bac5e008dcb2653a54e73d2d0571e06

- Remove master/slave usage from plpgsql tests. Author: Dagfinn Ilmari Mannsåker
<ilmari(at)ilmari(dot)org> Discussion:
https://www.postgresql.org/message-id/flat/E393EC88-377F-4C59-A67A-69F2A38D17C7(at)yesql(dot)se
https://git.postgresql.org/pg/commitdiff/3f0f99125e5c0fd704de3c07abe691ebefc51a50

- 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 <tgl(at)sss(dot)pgh(dot)pa(dot)us> Discussion:
https://www.postgresql.org/message-id/flat/21f88934-f00c-27f6-a9d8-7ea06d317781%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/c45643d618e35ec2fe91438df15abd4f3c0d85ca

- Make SQL/JSON error code names match SQL standard. There were some minor
differences that didn't seem necessary. Discussion:
https://www.postgresql.org/message-id/flat/86b67eef-bb26-c97d-3e35-64f1fbd4f9fe%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/a00c53b0cbf06dd6c01f5a1d55ebe21310a250af

- 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.
https://git.postgresql.org/pg/commitdiff/21e60fa8fe296355dca96c451fb13119cc0e6bd2

Álvaro Herrera pushed:

- Replace genetic algorithm ASCII-art with a real figure. Author: Jürgen Purtz
Discussion: https://postgr.es/m/c6027f7a-78ea-8453-0837-09903ba5fd9b@purtz.de
https://git.postgresql.org/pg/commitdiff/28b6ec1df64775db6d6eb47655141cda1240d901

- Fix bogus comment. Author: Alexander Lakhin Discussion:
https://postgr.es/m/20190819072244.GE18166@paquier.xyz
https://git.postgresql.org/pg/commitdiff/f8cf524da15ec4d8fad26aeff44af9928d30eb3d

- 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
https://git.postgresql.org/pg/commitdiff/8f75e8e44609335e6bdd73123284682235f242a2

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:
https://postgr.es/m/17463.1566153454@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/4c01a1110388661d8752fee35e9c5614aa4a2d32

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.
https://git.postgresql.org/pg/commitdiff/091bd6befcb71feb58b1478e1b976c85ae504822

- 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
differences.
https://git.postgresql.org/pg/commitdiff/867d25ccb4c7f290d08c720622ecaae4afd1dc3f

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:
https://postgr.es/m/CA%2BhUKGJWG7unNqmkxg7nC5o3o-0p2XP6co4r%3D9epqYMm8UY4Mw%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/f493d98c167321e5d5c17dd7d795721045a81c97

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

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

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

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

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

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

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

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

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.

Browse pgsql-announce by date

  From Date Subject
Next Message Steve Singer 2019-08-27 03:23:05 Slony 2.2.8 released
Previous Message Keith Fiske 2019-08-23 17:19:15 PostgreSQL Partition Manager (pg_partman) 4.2.0 Released