== PostgreSQL Weekly News - February 24, 2019 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - February 24, 2019 ==
Date: 2019-02-24 20:49:57
Message-ID: 20190224204957.GA8679@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

== PostgreSQL Weekly News - February 24, 2019 ==

Pgpool-II 4.0.3, 3.7.8, 3.6.15, 3.5.19 and 3.4.22 released.
http://pgpool.net/mediawiki/index.php/Downloads

PGConf.Brazil 2019 is on August 1-3 2019 in São Paulo. The CfP is open at
https://goo.gl/forms/owW8g5DKwnZtI4Mq1 until February 28, 2019.
http://pgconf.com.br

== PostgreSQL Product News ==

psycopg2 2.8 beta 1, a Python connector for PostgreSQL, released.
https://www.postgresql.org/message-id/CA%2Bmi_8aNS0e29cWbd42Erdu_OW5Jx%2BQ5O_Hre%2BWdF3DcbfRU0A%40mail.gmail.com

pgmetrics 1.6, a command-line tool for PostgreSQL metrics, released.
https://pgmetrics.io/

== PostgreSQL Jobs for February ==

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

== PostgreSQL Local ==

PostgreSQL(at)SCaLE is a two day, two track event which takes place on
March 7-8, 2019, at Pasadena Convention Center, as part of SCaLE 17X.
https://www.socallinuxexpo.org/scale/17x/postgresscale

pgDay Paris 2019 will be held in Paris, France on March 12, 2019
at 199bis rue Saint-Martin.
http://2019.pgday.paris/

Nordic PGDay 2019 will be held in Copenhagen, Denmark, at the
Copenhagen Marriott Hotel, on March 19, 2019.
https://2019.nordicpgday.org/

PGConf APAC 2019 will be held in Singapore March 19-21, 2019.
http://2019.pgconfapac.org/

The German-speaking PostgreSQL Conference 2019 will take place on May 10, 2019
in Leipzig. The CfP is open until February 26, 2019 at http://2019.pgconf.de/cfp
http://2019.pgconf.de/

PGDay.IT 2019 will take place May 16th and May 17th in Bologna, Italy.
https://2019.pgday.it/en/

PGCon 2019 will take place in Ottawa on May 28-31, 2019.
https://www.pgcon.org/2019

Swiss PGDay 2019 will take place in Rapperswil (near Zurich) on June 28, 2019.
The CfP is open through April 18, 2019, and registration is open.
http://www.pgday.ch/2019/

PostgresLondon 2019 will be July 2-3, 2019 with an optional training day on
July 1. The CfP is open at https://goo.gl/forms/hsvZKAmq0c96XQ4l2 through March
15, 2019.
http://postgreslondon.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 PST8PDT to david(at)fetter(dot)org(dot)

== Applied Patches ==

Michaël Paquier pushed:

- Avoid some unnecessary block reads in WAL reader. When reading a new page
internally and depending on the way the WAL reader facility gets used by
plugins, the current implementation of the WAL reader may finish by reading a
block multiple times while it is not actually necessary as the requested data
length may be equal to what has been already read. This can happen for any
size, but is more likely to happen at the end of a page. This can cause
performance penalties in plugins which rely on the block reads to be purely
sequential, zlib not liking backward reads for example. The new behavior also
shaves some cycles when doing recovery. Author: Arthur Zakirov Reviewed-by:
Andrey Lepikhov, Michael Paquier, Grigory Smolkin Discussion:
https://postgr.es/m/2ddf4a32-517e-d6f4-d992-4a63b6035bfd@postgrespro.ru
https://git.postgresql.org/pg/commitdiff/0dd6ff0ac8482f753405c5bdb091d2a8adc58e75

- Fix typo in transam.h for OIDs assigned by genbki.pl. The actual range of
reserved OIDs in this case is [11000,11999] and not [11000,12000]. Author:
John Naylor Discussion:
https://postgr.es/m/CAJVSVGV5StmK-inxbmrf0nLbBGeaAKnjnqxXmk+4ufeav8JMSA@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/f0cce9fcb5fd9f4158dbf5dfe11f263ad3b7b1dd

- Fix some issues with TAP tests of pg_basebackup and pg_verify_checksums.
ee9e145 has fixed the tests of pg_basebackup for checksums a first time, still
one seek() call missed the shot. Also, the data written in files to emulate
corruptions was not actually writing zeros as the quoting style was incorrect.
Backpatch the portion for pg_basebackup to v11 where these tests have been
introduced. The tests of pg_verify_checksums are new as of v12. Author:
Michael Banck Discussion:
https://postgr.es/m/1550153276.796.35.camel@credativ.de Backpatch-through: 11
https://git.postgresql.org/pg/commitdiff/a916bdc496a9d3fde48ca7c72478e7e4aecc5597

- Mark correctly initial slot snapshots with MVCC type when built. When building
an initial slot snapshot, snapshots are marked with historic MVCC snapshots as
type with the marker field being set in SnapBuildBuildSnapshot() but not
overriden in SnapBuildInitialSnapshot(). Existing callers of
SnapBuildBuildSnapshot() do not care about the type of snapshot used, but
extensions calling it actually may, as reported. While on it, mark correctly
the snapshot type when importing one. This is cosmetic as the field is
enforced to 0. Author: Antonin Houska Reviewed-by: Álvaro Herrera, Michael
Paquier Discussion: https://postgr.es/m/23215.1527665193@localhost
Backpatch-through: 9.4
https://git.postgresql.org/pg/commitdiff/56fadbedbd2f697400b89e7b767cfa4ec67932d6

- Remove duplicate variable declaration in fe-connect.c. The same variables are
declared twice when checking if a connection is writable, which is useless.
Author: Haribabu Kommi Discussion:
https://postgr.es/m/CAJrrPGf=rcALB54w_Tg1_hx3y+cgSWaERY-uYSQzGc3Zt5XN4g@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/554ca6954ecbfc54e7159a609b5ffc7921670185

- Add TAP tests for 2PC post-commit callbacks of multixacts at recovery. The
current set of TAP tests for two-phase transactions include some coverage for
post-commit callbacks of multixact, but it lacked tests for testing the
recovery of those callbacks. This commit adds some tests with soft and hard
restarts in this case, using transactions which include DDLs. Author: Michael
Paquier Reviewed-by: Oleksii Kliukin Discussion:
https://postgr.es/m/20190221055431.GO15532@paquier.xyz
https://git.postgresql.org/pg/commitdiff/b1086767087efe437131b9059fc6f2d3b7c7ecc2

- Fix incorrect function reference in comment of twophase.c. The header block of
TwoPhaseGetDummyBackendId mentioned incorrectly TwoPhaseGetDummyProc.
Reported-by: Oleksii Kliukin Discussion:
https://postgr.es/m/D8336E40-BBE1-4954-98BB-7830D3F5CB36@hintbits.com
https://git.postgresql.org/pg/commitdiff/4c23216002ac816f67fb87301290fa992115215e

Etsuro Fujita pushed:

- Save PathTargets for distinct/ordered relations in root->upper_targets[]. For
the convenience of extensions, we previously only saved PathTargets for
grouped, window, and final relations in root->upper_targets[] in
grouping_planner(). To improve the convenience, save PathTargets for distinct
and ordered relations as well. Author: Antonin Houska, with an additional
change by me Discussion: https://postgr.es/m/10994.1549559088@localhost
https://git.postgresql.org/pg/commitdiff/3fdc374b5d24b08119a91555ca2fae427af0b085

Michael Meskes pushed:

- Add bytea datatype to ECPG. So far ECPG programs had to treat binary data for
bytea column as 'char' type. But this meant converting from/to escaped format
with PQunescapeBytea/ PQescapeBytea() and therefore forcing users to add
unnecessary code and cost for the conversion in runtime. By adding a dedicated
datatype for bytea most of this special handling is no longer needed. Author:
Matsumura-san ("Matsumura, Ryo" <matsumura(dot)ryo(at)jp(dot)fujitsu(dot)com>) Discussion:
https://postgr.es/m/flat/03040DFF97E6E54E88D3BFEE5F5480F737A141F9(at)G01JPEXMBYT04
https://git.postgresql.org/pg/commitdiff/050710b36964dee7e1b2bf6b5ef00041fd5d2787

- Sync ECPG's CREATE TABLE AS statement with backend's. Author: Higuchi-san
("Higuchi, Daisuke" <higuchi(dot)daisuke(at)jp(dot)fujitsu(dot)com>)
https://git.postgresql.org/pg/commitdiff/e81f0e3113e6d9791285e6629d5301759839f3c9

- Properly end string to make sure ecpglib does not read beyond its boundaries.
https://git.postgresql.org/pg/commitdiff/8e6ab9f8012ff54d2e3cf2804db811e5f8eada1b

Andrew Dunstan pushed:

- Provide an extra-float-digits setting for pg_dump / pg_dumpall. Changes made
by commit 02ddd49 mean that dumps made against pre version 12 instances are no
longer comparable with those made against version 12 or later instances. This
makes cross-version upgrade testing fail in the buildfarm. Experimentation has
shown that the error is cured if the dumps are made when extra_float_digits is
set to 0. Hence this patch allows for it to be explicitly set rather than
relying on pg_dump's builtin default (3 in almost all cases). This feature
might have other uses, but should not normally be used. Discussion:
https://postgr.es/m/c76f7051-8fd3-ec10-7579-1f8842305b85@2ndQuadrant.com
https://git.postgresql.org/pg/commitdiff/af25bc03e17eb0aba195e42506b1a15f47178e44

Tom Lane pushed:

- De-clutter display of script runtimes in pg_regress. Add more whitespace, per
suggestion from Peter Eisentraut. Discussion:
https://postgr.es/m/e265e2ae-e92e-5ab9-dc68-60b6cb047b3d@2ndquadrant.com
https://git.postgresql.org/pg/commitdiff/93b5cc039e2328b7ac256de57a25c810d50a7f29

- Fix omissions in ecpg/test/sql/.gitignore. Oversights in commits 050710b36 and
e81f0e311.
https://git.postgresql.org/pg/commitdiff/315dcffb949bba8d2a002664bb6c4718e28b803b

- Fix incorrect strictness test for ArrayCoerceExpr expressions. The recursion
in contain_nonstrict_functions_walker() was done wrong, causing the strictness
check to be bypassed for a parse node that is the immediate input of an
ArrayCoerceExpr node. This could allow, for example, incorrect decisions
about whether a strict SQL function can be inlined. I didn't add a regression
test, because (a) the bug is so narrow and (b) I couldn't think of a test case
that wasn't dependent on a large number of other behaviors, to the point where
it would likely soon rot to the point of not testing what it was intended to.
I broke this in commit c12d570fa, so back-patch to v11. Discussion:
https://postgr.es/m/27571.1550617881@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/1571bc0f0613a82befe1a6eda39df161777231ad

- Improve planner's understanding of strictness of type coercions. PG type
coercions are generally strict, ie a NULL input must produce a NULL output
(or, in domain cases, possibly an error). The planner's understanding of that
was a bit incomplete though, so improve it: * Teach
contain_nonstrict_functions() that CoerceViaIO can always be considered
strict. Previously it believed that only if the underlying I/O functions were
marked strict, which is often but not always true. * Teach
clause_is_strict_for() that CoerceViaIO, ArrayCoerceExpr, ConvertRowtypeExpr,
CoerceToDomain can all be considered strict. Previously it knew nothing about
any of them. The main user-visible impact of this is that IS NOT NULL
predicates can be proven to hold from expressions involving casts in more
cases than before, allowing partial indexes with such predicates to be used
without extra pushups. This reduces the surprise factor for users, who may
well be used to ordinary (function-call-based) casts being known to be strict.
Per a gripe from Samuel Williams. This doesn't rise to the level of a bug,
IMO, so no back-patch. Discussion:
https://postgr.es/m/27571.1550617881@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/e04a3905e4f2e93bbd8fca08c3baeed7b15a48cf

- Speed up match_eclasses_to_foreign_key_col() when there are many ECs. Check
ec_relids before bothering to iterate through the EC members. On a perhaps
extreme, but still real-world, query in which
match_eclasses_to_foreign_key_col() accounts for the bulk of the planner's
runtime, this saves nearly 40% of the runtime. It's a bit of a stopgap fix,
but it's simple enough to be back-patched to 9.6 where this code came in; so
let's do that. David Rowley Discussion:
https://postgr.es/m/6970.1545327857@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/fa86238f1eac5b1bfb3887d2deb138f53da82c9b

- Move estimate_hashagg_tablesize to selfuncs.c, and widen result to double. It
seems to make more sense for this to be in selfuncs.c, since it's largely a
statistical-estimation thing, and it's related to other functions like
estimate_hash_bucket_stats that are there. While at it, change the result
type from Size to double. Perhaps at one point it was impossible for the
result to overflow an integer, but I've got no confidence in that proposition
anymore. Nothing's actually done with the result except to compare it to a
work_mem-based limit, so as long as we don't get an overflow on the way to
that comparison, things should be fine even with very large dNumGroups. Code
movement proposed by Antonin Houska, type change by me Discussion:
https://postgr.es/m/25767.1549359615@localhost
https://git.postgresql.org/pg/commitdiff/0c7d53793079a1af3f070d93e3eb86a52720f6e7

- Fix mark-and-restore-skipping test case to not be a self-join. There isn't any
good reason for this test to be a self-join rather than a join between
separate tables, except that it saved a couple of SQL commands for setup. A
proposed patch to optimize away self-joins breaks the test, so adjust it to
avoid that happening. Discussion:
https://postgr.es/m/64486b0b-0404-e39e-322d-0801154901f3@postgrespro.ru
https://git.postgresql.org/pg/commitdiff/24d08f3c0a1f04ea8bac68eb3aa3b069680e43f5

- Fix plan created for inherited UPDATE/DELETE with all tables excluded. In the
case where inheritance_planner() finds that every table has been excluded by
constraints, it thought it could get away with making a plan consisting of
just a dummy Result node. While certainly there's no updating or deleting to
be done, this had two user-visible problems: the plan did not report the
correct set of output columns when a RETURNING clause was present, and if
there were any statement-level triggers that should be fired, it didn't fire
them. Hence, rather than only generating the dummy Result, we need to stick a
valid ModifyTable node on top, which requires a tad more effort here. It's
been broken this way for as long as inheritance_planner() has known about
deleting excluded subplans at all (cf commit 635d42e9c), so back-patch to all
supported branches. Amit Langote and Tom Lane, per a report from Petr
Fedorov. Discussion:
https://postgr.es/m/5da6f0f0-1364-1876-6978-907678f89a3e@phystech.edu
https://git.postgresql.org/pg/commitdiff/ab5fcf2b04f9cc4ecccb1832faabadb047087d23

- Fix ecpg bugs caused by missing semicolons in the backend grammar. The Bison
documentation clearly states that a semicolon is required after every grammar
rule, and our scripts that generate ecpg's grammar from the backend's
implicitly assumed this is true. But it turns out that only ancient versions
of Bison actually enforce that. There have been a couple of rules without
trailing semicolons in gram.y for some time, and as a consequence, ecpg's
grammar was faulty and produced wrong output for the affected statements. To
fix, add the missing semis, and add some cross-checks to ecpg's scripts so
that they'll bleat if we mess this up again. The cases that were broken were:
* "SET variable = DEFAULT" (but not "SET variable TO DEFAULT"), as well as
allied syntaxes such as ALTER SYSTEM SET ... DEFAULT. These produced
syntactically invalid output that the server would reject. * Multiple type
names in DROP TYPE/DOMAIN commands. Only the first type name would be
listed in the emitted command. Per report from Daisuke Higuchi. Back-patch
to all supported versions. Discussion:
https://postgr.es/m/1803D792815FC24D871C00D17AE95905DB51CE@g01jpexmbkw24
https://git.postgresql.org/pg/commitdiff/9e138a401d19acc2129ebfd37e7609589210ff67

Andres Freund pushed:

- Remove line duplicated during conflict resolution. I included the duplicated
ExecTypeFromTL in 578b2297 "Remove WITH OIDS support". Reported-By: Peter
Eisentraut Discussion:
https://postgr.es/m/ba819888-63c6-7f98-6acb-3731142d9414@2ndquadrant.com
https://git.postgresql.org/pg/commitdiff/22bc403029c096639a74d7c91069bf9e8a35460f

Peter Eisentraut pushed:

- Use varargs macro for CACHEDEBUG. Reviewed-by: Andres Freund
<andres(at)anarazel(dot)de>
https://git.postgresql.org/pg/commitdiff/90cfa49003831dbea109a9f0a7924dc95c1bf1c5

- Fix dbtoepub output file name. In previous releases, the input file of
dbtoepub was postgres.xml, and dbtoepub knows to derive the output file name
postgres.epub from that automatically. But now the intput file is
postgres.sgml (since postgres.sgml is itself an XML file and we no longer need
the intermediate postgres.xml file), but dbtoepub doesn't know how to deal
with the .sgml suffix, so the automatically derived output file name becomes
postgres.sgml.epub. Fix by adding an explicit -o option.
https://git.postgresql.org/pg/commitdiff/7aa00d2464b4e14d553e8a64adacfe9741939e14

- pg_regress: Don't use absolute paths for the diff. Don't expand inputfile and
outputfile to absolute paths globally, just where needed. In particular, pass
them as is to the file name arguments of the diff command, so that we don't
see the full absolute path in the diff header, which makes the diff
unnecessarily verbose and harder to read. Discussion:
https://www.postgresql.org/message-id/0cc82900-c457-1cee-3ab2-7b0f5d215061@2ndquadrant.com
https://git.postgresql.org/pg/commitdiff/1995552deb5479a50ec9044f0179f906ff7772e0

- doc: Add security information about pg_stat_activity. Add a basic note that
some columns in pg_stat_activity and related views are not visible to all
users. Discussion:
https://www.postgresql.org/message-id/3018acd9-e5d8-1e85-5ed7-47276cd77569%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/213eae9b8a8a6b2ce3b0e5f5dc86d4b267096398

- Hide other user's pg_stat_ssl rows. Change pg_stat_ssl so that an unprivileged
user can only see their own rows; other rows will be all null. This makes the
behavior consistent with pg_stat_activity, where information about where the
connection came from is also restricted. Reviewed-by: Michael Paquier
<michael(at)paquier(dot)xyz> Discussion:
https://www.postgresql.org/message-id/flat/63117976-d02c-c8e2-3aef-caa31a5ab8d3%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/f9692a769b16f53be80f819fa5ee91e28dc7683a

- Add const qualifier. New code introduced in
050710b36964dee7e1b2bf6b5ef00041fd5d2787. The lack of const is not currently
a compiler warning, but it's nice to have for consistency with surrounding
code.
https://git.postgresql.org/pg/commitdiff/1373ba55c9b9c9a5e4705daa03643255b4de1519

- Revert "pg_regress: Don't use absolute paths for the diff". This reverts
commit 1995552deb5479a50ec9044f0179f906ff7772e0. Several developers didn't
like the new behavior.
https://git.postgresql.org/pg/commitdiff/f27522553992132d34c67caeea193d57934111cf

Dean Rasheed pushed:

- Fix DEFAULT-handling in multi-row VALUES lists for updatable views. INSERT ...
VALUES for a single VALUES row is implemented differently from a multi-row
VALUES list, which causes inconsistent behaviour in the way that DEFAULT items
are handled. In particular, when inserting into an auto-updatable view on top
of a table with a column default, a DEFAULT item in a single VALUES row gets
correctly replaced with the table column's default, but for a multi-row VALUES
list it is replaced with NULL. Fix this by allowing rewriteValuesRTE() to
leave DEFAULT items in the VALUES list untouched if the target relation is an
auto-updatable view and has no column default, deferring DEFAULT-expansion
until the query against the base relation is rewritten. For all other types of
target relation, including tables and trigger- and rule-updatable views, we
must continue to replace DEFAULT items with NULL in the absence of a column
default. This is somewhat complicated by the fact that if an auto-updatable
view has DO ALSO rules attached, the VALUES lists for the product queries need
to be handled differently from the original query, since the product queries
need to act like rule-updatable views whereas the original query has
auto-updatable view semantics. Back-patch to all supported versions.
Reported by Roger Curley (bug #15623). Patch by Amit Langote and me.
Discussion: https://postgr.es/m/15623-5d67a46788ec8b7f@postgresql.org
https://git.postgresql.org/pg/commitdiff/41531e42d34f4aca117d343b5e40f3f757dec5fe

Amit Kapila pushed:

- Doc: Update the documentation for FSM behavior for small tables. In commit
b0eaa4c51b, we have avoided the creation of FSM for small tables. So the
functions that use FSM to compute the free space can return zero for such
tables. This was previously also possible for the cases where the vacuum has
not been triggered to update FSM. This commit updates the comments in code
and documentation to reflect this behavior. Author: John Naylor Reviewed-by:
Amit Kapila Discussion:
https://postgr.es/m/CACPNZCtba-3m1q3A8gxA_vxg=T7gQf7gMbpR4Ciy5LntY-j+0Q@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/29d108cdecbe918452e70041d802cc515b2d56b8

Álvaro Herrera pushed:

- Make object address handling more robust. pg_identify_object_as_address
crashes when passed certain tuples from inconsistent system catalogs. Make it
more defensive. Author: Álvaro Herrera Reviewed-by: Michaël Paquier
Discussion: https://postgr.es/m/20190218202743.GA12392@alvherre.pgsql
https://git.postgresql.org/pg/commitdiff/5721b9b3ceaa57219244954a6084d107b73082b6

- Report correct name in autovacuum "work items" activity. We were reporting the
database name instead of the relation name to pg_stat_activity. Repair.
Reported-by: Justin Pryzby Discussion:
https://postgr.es/m/20190220185552.GR28750@telsasoft.com
https://git.postgresql.org/pg/commitdiff/98098faaff77a632c759c967f3b956524e492ee4

Andrew Gierth pushed:

- Use an unsigned char for bool if we don't use the native bool. On (rare)
platforms where sizeof(bool) > 1, we need to use our own bool, but imported
c99 code (such as Ryu) may want to use bool values as array subscripts, which
elicits warnings if bool is defined as char. Using unsigned char instead
should work just as well for our purposes, and avoid such warnings. Per
buildfarm members prariedog and locust.
https://git.postgresql.org/pg/commitdiff/d26a810ebf9e419556a60bdc0a4190883c38f4c4

Robert Haas pushed:

- Delay lock acquisition for partitions until we route a tuple to them. Instead
of locking all partitions to which we might route a tuple at executor startup,
just lock them as we use them. In some cases such a partition might get
locked at executor startup anyway because it appears in the query's range
table for some other reason, but in other cases this is a bit savings. This
changes the order in which partitions are locked in some cases, which might
conceivably create deadlock hazards that don't exist today, but per
discussion, it seems like such cases should be rare enough that we can neglect
them in favor of improving performance. David Rowley, reviewed and tested by
Tomas Vondra, Sho Kato, John Naylor, Tom Lane, and me. Discussion:
http://postgr.es/m/CAKJS1f-=FnMqmQP6qitkD+xEddxw22ySLP-0xFk3JAqUX2yfMw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/9eefba181f7782d27d85d7e94e6028371e7ab2d7

- Move code for managing PartitionDescs into a new file, partdesc.c. This is
similar in spirit to the existing partbounds.c file in the same directory,
except that there's a lot less code in the new file created by this commit.
Pending work in this area proposes to add a bunch more code related to
PartitionDescs, though, and this will give us a good place to put it.
Discussion:
http://postgr.es/m/CA+TgmoZUwPf_uanjF==gTGBMJrn8uCq52XYvAEorNkLrUdoawg@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/1bb5e78218107db543086e71fc162d36a955b08e

Thomas Munro pushed:

- Tolerate ENOSYS failure from sync_file_range(). One unintended consequence of
commit 9ccdd7f6 was that Windows WSL users started getting a panic whenever we
tried to initiate data flushing with sync_file_range(), because WSL does not
implement that system call. Previously, they got a stream of periodic
warnings, which was also undesirable but at least ignorable. Prevent the
panic by handling ENOSYS specially and skipping the panic promotion with
data_sync_elevel(). Also suppress future attempts after the first such
failure so that the pre-existing problem of noisy warnings is improved.
Back-patch to 9.6 (older branches were not affected in this way by 9ccdd7f6).
Author: Thomas Munro and James Sewell Tested-by: James Sewell Reported-by:
Bruce Klein Discussion:
https://postgr.es/m/CA+mCpegfOUph2U4ZADtQT16dfbkjjYNJL1bSTWErsazaFjQW9A@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/483520eca426fb1b428e8416d1d014ac5ad80ef4

- Tolerate EINVAL when calling fsync() on a directory. Previously, we tolerated
EBADF as a way for the operating system to indicate that it doesn't support
fsync() on a directory. Tolerate EINVAL too, for older versions of Linux
CIFS. Bug #15636. Back-patch all the way. Reported-by: John Klann
Discussion: https://postgr.es/m/15636-d380890dafd78fc6@postgresql.org
https://git.postgresql.org/pg/commitdiff/f16735d80d2fbe1c86f4ac044ee66fe2073b8877

== Pending Patches ==

Thomas Munro sent in a patch to fix inconsistent out-of-memory error reporting
in dsa.c.

Donald Dong sent in another revision of a patch to improve cost computations for
EXPLAIN.

Noah Misch sent in a patch to restrict vac_update_datfrozenxid() to one backend per
database, and restrict vac_truncate_clog() and asyncQueueAdvanceTail() to one
backend per cluster.

Peter Eisentraut sent in a patch to add the eponymous environment GUC and a new
--clear-environment option for pg_ctl.

Michael Banck sent in two more revisions of a patch to make it possible to track
the progress of pg_verify_checksums.

Euler Taveira de Oliveira sent in two revisions of a patch to pg_restore to
stdout in --file.

Aleksey Kondratov sent in two more revisions of a patch to pg_rewind which adds
options to use restore_command from command line or cluster config.

Kyotaro HORIGUCHI sent in three more revisions of a patch to make the stats
collector use shared memory instead of files.

Iwata Aya sent in two more revisions of a patch to add a libpq debug log.

Chengchao Yu sent in another revision of a patch to fix a deadlock issue in
single user mode when an I/O failure occurs.

Dmitry Dolgov sent in another revision of a patch to implement generic type
subscripting.

Masahiko Sawada sent in another revision of a patch to create a copy function
for replication slots.

Surafel Temesgen sent in two more revisions of a patch to let COPY continue
after a failure and log the failing rows.

Peter Eisentraut sent in two more revisions of a patch to add collations with
nondeterministic comparison, of which case-insensitive ones are an example.

Amit Langote sent in three more revisions of a patch to speed up planning with
partitions.

Michaël Paquier sent in three more revisions of a patch to fix an infelicity
in 2PC's locking.

Takayuki Tsunakawa sent in another revision of a patch to speed up transaction
completion in the case where many relations are accessed in a transaction.

Nikita Glukhov sent in three more revisions of a patch to add kNN to B-Tree
indexes.

Dmitry Dolgov sent in another revision of a patch to implement index skip scan
a.k.a. loose index scan atop IndexOnlyScan.

Artur Zakirov sent in another revision of a patch to make it possible to use
shared Ispell dictionaries.

Peter Eisentraut sent in a patch to hide other users' pg_stat_ssl rows from
unprivileged users.

David Rowley sent in another revision of a patch to ensure that partitions are
locked on demand rather than in advance during INSERT and UPDATE.

Sergei Kornilov sent in a patch to clarify the in-line documentation of
bgwriter_lru_maxpages in the sample postgresql.conf.

Etsuro Fujita sent in another revision of a patch to fix some problems with plan
estimates in the PostgreSQL FDW.

Kyotaro HORIGUCHI and Takeshi Ideriha traded patches to protect syscache from
bloating with negative cache entries.

Robert Haas sent in a patch to add a catalog_cache_memory_target GUC.

Haribabu Kommi sent in another revision of a patch to add a pluggable storage
API.

Amit Kapila and John Naylor traded patches to avoid creation of the free space
map for small tables.

Tom Lane sent in another revision of a patch to add equivalence class indexing.

Michaël Paquier sent in another revision of a patch to add a flag to
format_type_extended to enforce NULL-ness, refactor the format procedure and
operator APIs to be more modular, and eliminate the user-visible cache lookup
errors for objaddr SQL functions.

Christoph Berg sent in a patch to align timestamps in pg_regress output.

Pierre Ducroquet sent in a patch to document some of the row-level security
limitations.

Pavan Deolasee sent in another revision of a patch to fix an infelicity between
COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits.

Justin Pryzby sent in another revision of a patch to show the size of a
partitioned table in psql.

Paul Ramsey sent in another revision of a patch to implement compressed TOAST
slicing.

David Rowley sent in another revision of a patch to transform suitable NOT IN
constructs into anti-joins, greatly speeding up execution.

Thomas Munro sent in a PoC patch to add parameterized vectors and
sorting/searching support, inject a few extra tricks into simplevector.h,
convert the type of various relationOids members from List to oid_vector, add a
few more simplevector improvements, and convert p_joinexprs from a List to a
nodep_vector.

Mitani sent in two revisions of a patch to enable transactions on partitioned
tables via the PostgreSQL FDW.

Shawn Debnath sent in another revision of a patch to refactor the fsync
mechanism to support future SMGR implementations, along with a couple of
temporary patches to instrument.

Robbie Harwood sent in a patch to log the encryption strength in libpq GSSAPI
connections.

Gilles Darold sent in another revision of a patch to psql to add schema total
size to the output of \dn+.

Pavel Stěhule and Chapman Flack traded patches to add variadic support to LEAST
and GREATEST.

Nikita Glukhov sent in a patch to make some JSONB functions more efficient.

Tom Lane sent in another revision of a patch to remove unneeded self-joins.

Kyotaro HORIGUCHI sent in another revision of a patch to add a WAL relief vent
for replication slots.

Haribabu Kommi sent in another revision of a patch to libpq to add a
TargetSessionAttrsType enum, make transaction_read_only a GUC_REPORT variable,
and add a prefer-read target_session_attrs type.

Yuzuko Hosoya sent in a patch to fix a bug in the pruning of default partitions.

Peter Eisentraut sent in another revision of a patch to create a unified logging
system for command-line programs.

Dean Rasheed sent in a patch to clarify and fix OVERRIDING {USER | SYSTEM}
VALUES in DML.

Magnus Hagander sent in two revisions of a patch to fix an issue that manifested
as checksum errors in pg_stat_database.

Magnus Hagander sent in another revision of a patch to prevent XID wraparound by
making it easier to reap temp tables.

Álvaro Herrera sent in another revision of a patch to make it possible for
foreign keys to point at partitioned tables.

Robert Haas sent in another revision of the lastRemovedXid-to-primary patch.

Amit Khandekar sent in another revision of a patch to add a
prefetch_xid_horizon_scan.

Álvaro Herrera sent in another revision of a patch to make it possible to
monitor the progress of CREATE INDEX CONCURRENTLY.

Peter Eisentraut and Corey Huinker traded patches to clean up ri_triggers.c.

Andrew Gierth sent in a patch to make JIT on FreeBSD ARMv7 work.

Andrew Dunstan sent in a patch to fix some FOP warnings about id attributes in
title tags in the documentation.

Tomáš Vondra sent in another revision of a patch to add multi-range capability
to BRIN indexes.

Magnus Hagander sent in a patch to prevent dropping temp schemas.

Tomáš Vondra sent in a patch to enable including configuration parameters in
EXPLAIN output via a new SETTINGS option.

Tom Lane sent in a patch to convert Lists into arrays.

David Rowley sent in another revision of a patch to forgo generating
single-subpath Append and MergeAppend paths.

David Rowley sent in another revision of a patch to allow Append to be used in
place of MergeAppend for some cases.

David Rowley sent in another revision of a patch to make it possible to make
pg_dump output multiple-values INSERTs.

Alexander Korotkov sent in another revision of a patch to implement JSONPATH.

Andrey Borodin sent in another revision of a patch to implement GiST
verification function for amcheck.

Jeff Janes sent in another revision of a patch to fix the Bloom index cost
model.

Browse pgsql-announce by date

  From Date Subject
Next Message Stephen Frost 2019-02-28 15:20:32 PostgreSQL Participates in Google Summer of Code 2019!
Previous Message Bo Peng 2019-02-21 06:08:30 Pgpool-II 4.0.3, 3.7.8, 3.6.15, 3.5.19 and 3.4.22 are now officially released.