== PostgreSQL Weekly News - September 2, 2018 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - September 2, 2018 ==
Date: 2018-09-02 22:35:53
Message-ID: 20180902223553.GA29881@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

== PostgreSQL Weekly News - September 2, 2018 ==

== PostgreSQL Product News ==

pspg 1.6.0, a pager designed for PostgreSQL, released.
https://github.com/okbob/pspg/releases/tag/1.6.0

== PostgreSQL Local ==

PostgreOpen Silicon Valley 2018 will be held in San Francisco on September 5-7, 2018.
https://2018.postgresopen.org/

The Portland PostgreSQL Users Group will be holding a PGDay on September 10,
2018 in Portland, OR.
https://pdx.postgresql.us/pdxpgday2018

PostgresConf South Africa 2018 will take place in Johannesburg on October 9, 2018
https://postgresconf.org/conferences/SouthAfrica2018

PostgreSQL Conference Europe 2018 will be held on October 23-26, 2018 at the
Lisbon Marriott Hotel in Lisbon, Portugal.
https://2017.pgconf.eu/

2Q PGConf will be on December 4-5, 2018 in Chicago, IL.
http://www.2qpgconf.com/

PGConf.ASIA 2018 will take place on December 10-12, 2018 in Akihabara, Tokyo,
Japan.
http://www.pgconf.asia/EN/2018/

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

- Improve VACUUM and ANALYZE by avoiding early lock queue. A caller of VACUUM
can perform early lookup obtention which can cause other sessions to block on
the request done, causing potentially DOS attacks as even a non-privileged
user can attempt a vacuum fill of a critical catalog table to block even all
incoming connection attempts. Contrary to TRUNCATE, a client could attempt a
system-wide VACUUM after building the list of relations to VACUUM, which can
cause vacuum_rel() or analyze_rel() to try to lock the relation but the
operation would just block. When the client specifies a list of relations and
the relation needs to be skipped, ownership checks are done when building the
list of relations to work on, preventing a later lock attempt. vacuum_rel()
already had the sanity checks needed, except that those were applied too late.
This commit refactors the code so as relation skips are checked beforehand,
making it safer to avoid too early locks, for both manual VACUUM with and
without a list of relations specified. An isolation test is added emulating
the fact that early locks do not happen anymore, issuing a WARNING message
earlier if the user calling VACUUM is not a relation owner. When a
partitioned table is listed in a manual VACUUM or ANALYZE command, its full
list of partitions is fetched, all partitions get added to the list to work
on, and then each one of them is processed one by one, with ownership checks
happening at the later phase of vacuum_rel() or analyze_rel(). Trying to do
early ownership checks for each partition is proving to be tedious as this
would result in deadlock risks with lock upgrades, and skipping all partitions
if the listed partitioned table is not owned would result in a behavior change
compared to how Postgres 10 has implemented vacuum for partitioned tables.
The original problem reported related to early lock queue for critical
relations is fixed anyway, so priority is given to avoiding a
backward-incompatible behavior. Reported-by: Lloyd Albin, Jeremy Schneider
Author: Michael Paquier Reviewed by: Nathan Bossart, Kyotaro Horiguchi
Discussion:
https://postgr.es/m/152512087100.19803.12733865831237526317@wrigleys.postgresql.org
Discussion: https://postgr.es/m/20180812222142.GA6097@paquier.xyz
https://git.postgresql.org/pg/commitdiff/a556549d7e6dce15fe216bd4130ea64239f4d83f

- Rework option set of oid2name oid2name has done little effort to keep an
interface consistent with other binary utilities: - -H was used instead of
-h/-host. This option is now marked as deprecated, still its output is
accepted to be backward-compatible. - -P has been removed from the code, and
was still documented. - All options gain long aliases, making connection
options more similar to other binaries. - Document environment variables
which could be used: PGHOST, PGPORT and. PGUSER. A basic set of TAP tests is
added on the way, and documentation is cleaned up to be more consistent with
other things. Author: Tatsuro Yamada Reviewed-by: Michael Paquier Discussion:
https://postgr.es/m/c7e7f25c-1747-cd0f-9335-390bc97b2db5@lab.ntt.co.jp
https://git.postgresql.org/pg/commitdiff/1aaf532deabfa356c99abc80fc78d988ad1f1355

- Stop bgworkers during fast shutdown with postmaster in startup phase. When a
postmaster gets into its phase PM_STARTUP, it would start background workers
using BgWorkerStart_PostmasterStart mode immediately, which would cause
problems for a fast shutdown as the postmaster forgets to send SIGTERM to
already-started background workers. With smart and immediate shutdowns, this
correctly happened, and fast shutdown is the only mode missing the shot.
Author: Alexander Kukushkin Reviewed-by: Michael Paquier Discussion:
https://postgr.es/m/CAFh8B=mvnD8+DZUfzpi50DoaDfZRDfd7S=gwj5vU9GYn8UvHkA@mail.gmail.com
Backpatch-through: 9.5
https://git.postgresql.org/pg/commitdiff/55875b6d2aa0946226e9261ee691cb519d92f8c1

- Rework option set of vacuumlo. Like oid2name, vacuumlo has been lacking
consistency with other utilities for its options: - Connection options gain
long aliases. - Document environment variables which could be used: PGHOST,
PGPORT and PGUSER. Documentation and code is reordered to be more consistent.
A basic set of TAP tests has been added while on it. Author: Tatsuro Yamada
Reviewed-by: Michael Paquier Discussion:
https://postgr.es/m/c7e7f25c-1747-cd0f-9335-390bc97b2db5@lab.ntt.co.jp
https://git.postgresql.org/pg/commitdiff/bfea331a5e1b993d22071fc1696e6e8811d2d0d4

- Ensure correct minimum consistent point on standbys. Startup process has
improved its calculation of incorrect minimum consistent point in 8d68ee6,
which ensures that all WAL available gets replayed when doing crash recovery,
and has introduced an incorrect calculation of the minimum recovery point for
non-startup processes, which can cause incorrect page references on a standby
when for example the background writer flushed a couple of pages on-disk but
was not updating the control file to let a subsequent crash recovery replay to
where it should have. The only case where this has been reported to be a
problem is when a standby needs to calculate the latest removed xid when
replaying a btree deletion record, so one would need connections on a standby
that happen just after recovery has thought it reached a consistent point.
Using a background worker which is started after the consistent point is
reached would be the easiest way to get into problems if it connects to a
database. Having clients which attempt to connect periodically could also be
a problem, but the odds of seeing this problem are much lower. The fix used
is pretty simple, as the idea is to give access to the minimum recovery point
written in the control file to non-startup processes so as they use a
reference, while the startup process still initializes its own references of
the minimum consistent point so as the original problem with incorrect page
references happening post-promotion with a crash do not show up. Reported-by:
Alexander Kukushkin Diagnosed-by: Alexander Kukushkin Author: Michael Paquier
Reviewed-by: Kyotaro Horiguchi, Alexander Kukushkin Discussion:
https://postgr.es/m/153492341830.1368.3936905691758473953@wrigleys.postgresql.org
Backpatch-through: 9.3
https://git.postgresql.org/pg/commitdiff/c186ba135ecafe987842920829629ef466ce6ce1

- Fix initial sync of slot parent directory when restoring status. At the
beginning of recovery, information from replication slots is recovered from
disk to memory. In order to ensure the durability of the information, the
status file as well as its parent directory are synced. It happens that the
sync on the parent directory was done directly using the status file path,
which is logically incorrect, and the current code has been doing a sync on
the same object twice in a row. Reported-by: Konstantin Knizhnik
Diagnosed-by: Konstantin Knizhnik Author: Michael Paquier Discussion:
https://postgr.es/m/9eb1a6d5-b66f-2640-598d-c5ea46b8f68a@postgrespro.ru
Backpatch-through: 9.4-
https://git.postgresql.org/pg/commitdiff/caa0c6ceba1fd6ec7b027532d68cecf5dfbbb2db

Peter Eisentraut pushed:

- Add some not null constraints to catalogs. Use BKI_FORCE_NOT_NULL on some
catalog field declarations that are never null (according to the source code
that accesses them).
https://git.postgresql.org/pg/commitdiff/9b39b799db781642dd0c1424c28e827d19663e20

- Fix snapshot leak warning for some procedures. The problem arises with the
combination of CALL with output parameters and doing a COMMIT inside the
procedure. When a CALL has output parameters, the portal uses the strategy
PORTAL_UTIL_SELECT instead of PORTAL_MULTI_QUERY. Using PORTAL_UTIL_SELECT
causes the portal's snapshot to be registered with the current resource owner
(portal->holdSnapshot); see 9ee1cf04ab6bcefe03a11837b53f29ca9dc24c7a for the
reason. Normally, PortalDrop() unregisters the snapshot. If not, then
ResourceOwnerRelease() will print a warning about a snapshot leak on
transaction commit. A transaction commit normally drops all portals
(PreCommit_Portals()), except the active portal. So in case of the active
portal, we need to manually release the snapshot to avoid the warning.
Reported-by: Prabhat Sahu <prabhat(dot)sahu(at)enterprisedb(dot)com> Reviewed-by:
Jonathan S. Katz <jkatz(at)postgresql(dot)org>
https://git.postgresql.org/pg/commitdiff/7a3b7bbfded3142aaa8edae2dbc88999568cc1cd

- pg_verify_checksums: Message style improvements and NLS support. The source
code was already set up for NLS support, so just a nls.mk file needed to be
added. Also, fix the old problem of putting the int64 format specifier right
into the string, which breaks NLS.
https://git.postgresql.org/pg/commitdiff/3e2ceb231ef0bbd04bb98aa3d3b58ebcac88c00a

- Error position support for partition specifications. Add support for error
position reporting for partition specifications. Reviewed-by: Fabien COELHO
<coelho(at)cri(dot)ensmp(dot)fr>
https://git.postgresql.org/pg/commitdiff/1e5e4efd02b614908cae62d9452528462d307224

- Error position support for defaults and check constraints. Add support for
error position reporting for the expressions contained in defaults and check
constraint definitions. This currently works only for CREATE TABLE, not ALTER
TABLE, because the latter is not set up to pass around the original query
string. Reviewed-by: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
https://git.postgresql.org/pg/commitdiff/a4a232b1e70229a6ba0e592f6775c019bb171d9a

- pg_dump: Reorganize getTableAttrs(). Instead of repeating the almost same
large query in each version branch, use one query and add a few columns to the
SELECT list depending on the version. This saves a lot of duplication.
Reviewed-by: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
https://git.postgresql.org/pg/commitdiff/daa9fe8a5264a3f192efa5ddee8fb011ad9da365

- Add semicolons to end of internally run queries. This ensures that the --echo
output of various tools (under scripts) is valid multiline SQL. Author:
Tatsuro Yamada <yamada(dot)tatsuro(at)lab(dot)ntt(dot)co(dot)jp>
https://git.postgresql.org/pg/commitdiff/7061e03319d9a31f02d3777ca856b6c33e7a0967

Tom Lane pushed:

- Fix missing dependency for pg_dump's ENABLE ROW LEVEL SECURITY items. The
archive should show a dependency on the item's table, but it failed to include
one. This could cause failures in parallel restore due to emitting ALTER
TABLE ... ENABLE ROW LEVEL SECURITY before restoring the table's data. In
practice the odds of a problem seem low, since you would typically need to
have set FORCE ROW LEVEL SECURITY as well, and you'd also need a very high
--jobs count to have any chance of this happening. That probably explains the
lack of field reports. Still, it's a bug, so back-patch to 9.5 where RLS was
introduced. Discussion: https://postgr.es/m/19784.1535390902@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/cbdca00bef59ee204313fe8f0e4f36bc804a38aa

- Include contrib modules in the temp installation even without REGRESS. Now
that we have TAP tests, a contrib module may have something useful to do in
"make check" even if it has no pg_regress-style regression scripts, and hence
no REGRESS setting. But the TAP tests will fail, or else test the wrong
installed files, unless we install the contrib module into the temp
installation. So move the bit about adding to EXTRA_INSTALL so that it
applies regardless. We might want this in back branches in future, but for
the moment I only risked adding it to v11. Discussion:
https://postgr.es/m/12438.1535488750@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/42e61c7748eb36b75a05bd0a9a35c370c70a86c8

- Make pg_restore's identify_locking_dependencies() more bulletproof. This
function had a blacklist of dump object types that it believed needed
exclusive lock ... but we hadn't maintained that, so that it was missing ROW
SECURITY, POLICY, and INDEX ATTACH items, all of which need (or should be
treated as needing) exclusive lock. Since the same oversight seems likely in
future, let's reverse the sense of the test so that the code has a whitelist
of safe object types; better to wrongly assume a command can't be run in
parallel than the opposite. Currently the only POST_DATA object type that's
safe is CREATE INDEX ... and that list hasn't changed in a long time.
Back-patch to 9.5 where RLS came in. Discussion:
https://postgr.es/m/11450.1535483506@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/e0a0cc28d0829bea5d339fc2db6ac26ea13d5ab4

- Code review for pg_dump's handling of ALTER INDEX ATTACH PARTITION. Ensure
the TOC entry is marked with the correct schema, so that its name is as unique
as the index's is. Fix the dependencies: we want dependencies from this TOC
entry to the two indexes it depends on, and we don't care (at least not for
this purpose) what order the indexes are created in. Also, add dependencies
on the indexes' underlying tables. Those might seem pointless given the index
dependencies, but they are helpful to cue parallel restore to avoid running
the ATTACH PARTITION in parallel with other DDL on the same tables.
Discussion: https://postgr.es/m/10817.1535494963@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/8cff4f5348d075e063100071013f00a900c32b0f

- Make checksum_impl.h safe to compile with -fstrict-aliasing. In general,
Postgres requires -fno-strict-aliasing with compilers that implement C99
strict aliasing rules. There's little hope of getting rid of that overall.
But it seems like it would be a good idea if storage/checksum_impl.h in
particular didn't depend on it, because that header is explicitly intended to
be included by external programs. We don't have a lot of control over the
compiler switches that an external program might use, as shown by Michael
Banck's report of failure in a privately-modified version of
pg_verify_checksums. Hence, switch to using a union in place of willy-nilly
pointer casting inside this file. I think this makes the code a bit more
readable anyway. checksum_impl.h hasn't changed since it was introduced in
9.3, so back-patch all the way. Discussion:
https://postgr.es/m/1535618100.1286.3.camel@credativ.de
https://git.postgresql.org/pg/commitdiff/8c62d9d16f014565d5f427506878812219a01604

- Code review for pg_verify_checksums.c. Use postgres_fe.h, since this is
frontend code. Pretend that we've heard of project style guidelines for, eg,
#include order. Use BlockNumber not int arithmetic for block numbers, to
avoid misbehavior with relations exceeding 2^31 blocks. Avoid an unnecessary
strict-aliasing warning (per report from Michael Banck). Const-ify assorted
stuff. Avoid scribbling on the output of readdir() -- perhaps that's safe in
practice, but POSIX forbids it, and this code has so far earned exactly zero
credibility portability-wise. Editorialize on an ambiguously-worded message.
I did not touch the problem of the "buf" local variable being possibly
insufficiently aligned; that's not specific to this code, and seems like it
should be fixed as part of a different, larger patch. Discussion:
https://postgr.es/m/1535618100.1286.3.camel@credativ.de
https://git.postgresql.org/pg/commitdiff/d9c366f9e8017306201fe12d27212d8720395c04

- Fix psql's \dC command to annotate I/O conversion casts as such. A cast
declared WITH INOUT was described as '(binary coercible)', which seems pretty
inaccurate; let's print '(with inout)' instead. Per complaint from
Jean-Pierre Pelletier. This definitely seems like a bug fix, but given that
it's been wrong since 8.4 and nobody complained before, I'm hesitant to
back-patch a behavior change into stable branches. It doesn't seem too late
for v11 though. Discussion:
https://postgr.es/m/5b887023.1c69fb81.ff96e.6a1d@mx.google.com
https://git.postgresql.org/pg/commitdiff/115bf1e79af0114c18d7d5675f4ba7e8bd6e11e9

- Avoid using potentially-under-aligned page buffers. There's a project policy
against using plain "char buf[BLCKSZ]" local or static variables as page
buffers; preferred style is to palloc or malloc each buffer to ensure it is
MAXALIGN'd. However, that policy's been ignored in an increasing number of
places. We've apparently got away with it so far, probably because (a)
relatively few people use platforms on which misalignment causes core dumps
and/or (b) the variables chance to be sufficiently aligned anyway. But this
is not something to rely on. Moreover, even if we don't get a core dump, we
might be paying a lot of cycles for misaligned accesses. To fix, invent new
union types PGAlignedBlock and PGAlignedXLogBlock that the compiler must
allocate with sufficient alignment, and use those in place of plain char
arrays. I used these types even for variables where there's no risk of a
misaligned access, since ensuring proper alignment should make kernel data
transfers faster. I also changed some places where we had been palloc'ing
short-lived buffers, for coding style uniformity and to save palloc/pfree
overhead. Since this seems to be a live portability hazard (despite the lack
of field reports), back-patch to all supported versions. Patch by me; thanks
to Michael Paquier for review. Discussion:
https://postgr.es/m/1535618100.1286.3.camel@credativ.de
https://git.postgresql.org/pg/commitdiff/44cac9346479d4b0cc9195b0267fd13eb4e7442c

- Doc: fix oversights in "Client/Server Character Set Conversions" table. This
table claimed that JOHAB could be used as a server encoding, which was true
originally but hasn't been true since 8.3. It also lacked entries for
EUC_JIS_2004 and SHIFT_JIS_2004. JOHAB problem noted by Lars Kanis, the
others by me. Discussion:
https://postgr.es/m/c0f514a1-b7a9-b9ea-1c02-c34aead56c06@greiz-reinsdorf.de
https://git.postgresql.org/pg/commitdiff/4299c32316addaad2255e6363b26ba1eec5c3999

Thomas Munro pushed:

- Code review for simplehash.h. Fix reference to non-existent file in comment.
Add SH_ prefix to the EMPTY and IN_USE tokens, to reduce likelihood of
collisions with unrelated macros. Add include guards around the function
definitions that are not "parameterized", so the header can be used again in
the same translation unit. Undefine SH_EQUAL macro where other "parameter"
macros are undefined, for the same reason. Author: Thomas Munro Reviewed-by:
Tom Lane Discussion:
https://postgr.es/m/CAEepm%3D1LdXZ3mMTM8tHt_b%3DK1kREit%3Dp8sikesak%3DkzHHM07Nw%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/ee0e2745c2f2c8ac47250dde718ac712686a79aa

- Add Greek characters to unaccent.rules. Author: Tasos Maschalidis
Reviewed-by: Michael Paquier, Tom Lane Discussion:
https://postgr.es/m/153495048900.1368.11566580687623014380%40wrigleys.postgresql.org
Discussion:
https://postgr.es/m/VI1PR01MB38537EBD529FE5EE3FE9A5FEB5370%40VI1PR01MB3853.eurprd01.prod.exchangelabs.com
https://git.postgresql.org/pg/commitdiff/5e8d670c313531c0dca245943fb84c94a477ddc4

Andrew Gierth pushed:

- Avoid quadratic slowdown in regexp match/split functions. regexp_matches,
regexp_split_to_table and regexp_split_to_array all work by compiling a list
of match positions as character offsets (NOT byte positions) in the source
string. Formerly, they then used text_substr to extract the matched text; but
in a multi-byte encoding, that counts the characters in the string, and the
characters needed to reach the starting byte position, on every call.
Accordingly, the performance degraded as the product of the input string
length and the number of match positions, such that splitting a string of a
few hundred kbytes could take many minutes. Repair by keeping the
wide-character copy of the input string available (only in the case where
encoding_max_length is not 1) after performing the match operation, and
extracting substrings from that instead. This reduces the complexity to being
linear in the number of result bytes, discounting the actual regexp match
itself (which is not affected by this patch). In passing, remove cleanup
using retail pfree() which was obsoleted by commit ff428cded (Feb 2008) which
made cleanup of SRF multi-call contexts automatic. Also increase (to ~134
million) the maximum number of matches and provide an error message when it is
reached. Backpatch all the way because this has been wrong forever. Analysis
and patch by me; review by Kaiting Chen. Discussion:
https://postgr.es/m/87pnyn55qh.fsf@news-spur.riddles.org.uk see also
https://postgr.es/m/87lg996g4r.fsf@news-spur.riddles.org.uk
https://git.postgresql.org/pg/commitdiff/c8ea87e4bd950572cba4575e9a62284cebf85ac5

- postgres_fdw: don't push ORDER BY with no vars (bug #15352). Commit aa09cd242
changed a condition in find_em_expr_for_rel from being a bms_equal comparison
of relids to bms_is_subset, in order to support order by clauses on foreign
joins. But this also allows through the degenerate case of expressions with no
Vars at all (and hence empty relids), including integer constants which will
be parsed unexpectedly on the remote (viz. "ERROR: ORDER BY position 0 is not
in select list" as in the bug report). Repair by adding an additional
!bms_is_empty test. Backpatch through to 9.6 where the aforementioned change
was made. Per bug #15352 from Maksym Boguk; analysis and patch by me.
Discussion:
https://postgr.es/m/153518420278.1478.14875560810251994661@wrigleys.postgresql.org
https://git.postgresql.org/pg/commitdiff/bf2d0462cd735f76bcf6eb8b399723674b2221ef

Heikki Linnakangas pushed:

- Fix IndexInfo comments. Recently, ii_KeyAttrNumbers was renamed to
ii_IndexAttrNumbers, and ii_Am field was added, but the comments were not
updated. Author: Yugo Nagata Discussion:
https://www.postgresql.org/message-id/20180830134831.e35a91b8b978b248c16c8f7b@sraoss.co.jp
https://git.postgresql.org/pg/commitdiff/4b035841a1bcaadbe4f9e0e174aef773a4fa41f6

Álvaro Herrera pushed:

- Mention change of width of values generated by SERIAL sequences. This changed
during pg10 development, but had not been documented. Co-authored-by:
Jonathan S. Katz <jkatz(at)postgresql(dot)org> Discussion:
https://postgr.es/m/20180828163408.vl44nwetdybwffyk@alvherre.pgsql
https://git.postgresql.org/pg/commitdiff/4db226b756529ea4d357a4af507c6ed2c31415c0

- pg_verify_checksums: rename -d to --verbose. Using -d is odd, because we
normally reserve that for a database argument, so rename it to -v and add long
version --verbose. Also, reduce it to emit one line per file checked rather
than one line per block. Per a complaint from Michael Banck. Author: Yugo
Nagata <nagata(at)sraoss(dot)co(dot)jp> Reviewed-by: Michael Banck
<michael(dot)banck(at)credativ(dot)de> Discussion:
https://postgr.es/m/20180827113411.GA22768@nighthawk.caipicrew.dd-dns.de
https://git.postgresql.org/pg/commitdiff/a846e6d0239d24fe9a95c7b12e1905e20f8fdcf0

Etsuro Fujita pushed:

- Remove extra word from src/backend/optimizer/README.
https://git.postgresql.org/pg/commitdiff/2e39f69b6621bd3d67f650a5647fd0412819712d

- Disable support for partitionwise joins in problematic cases. Commit f49842d,
which added support for partitionwise joins, built the child's tlist by
applying adjust_appendrel_attrs() to the parent's. So in the case where the
parent's included a whole-row Var for the parent, the child's contained a
ConvertRowtypeExpr. To cope with that, that commit added code to the planner,
such as setrefs.c, but some code paths still assumed that the tlist for a scan
(or join) rel would only include Vars and PlaceHolderVars, which was true
before that commit, causing errors: * When creating an explicit sort node for
an input path for a mergejoin path for a child join,
prepare_sort_from_pathkeys() threw the 'could not find pathkey item to sort'
error. * When deparsing a relation participating in a pushed down child join
as a subquery in contrib/postgres_fdw, get_relation_column_alias_ids() threw
the 'unexpected expression in subquery output' error. * When performing
set_plan_references() on a local join plan generated by contrib/postgres_fdw
for EvalPlanQual support for a pushed down child join, fix_join_expr() threw
the 'variable not found in subplan target lists' error. To fix these, two
approaches have been proposed: one by Ashutosh Bapat and one by me. While the
former keeps building the child's tlist with a ConvertRowtypeExpr, the latter
builds it with a whole-row Var for the child not to violate the planner
assumption, and tries to fix it up later, But both approaches need more work,
so refuse to generate partitionwise join paths when whole-row Vars are
involved, instead. We don't need to handle ConvertRowtypeExprs in the child's
tlists for now, so this commit also removes the changes to the planner.
Previously, partitionwise join computed attr_needed data for each child
separately, and built the child join's tlist using that data, which also
required an extra step for adding PlaceHolderVars to that tlist, but it would
be more efficient to build it from the parent join's tlist through the
adjust_appendrel_attrs() transformation. So this commit builds that list that
way, and simplifies build_joinrel_tlist() and placeholder.c as well as part of
set_append_rel_size() to basically what they were before partitionwise join
went in. Back-patch to PG11 where partitionwise join was introduced. Report
by Rajkumar Raghuwanshi. Analysis by Ashutosh Bapat, who also provided some
of regression tests. Patch by me, reviewed by Robert Haas. Discussion:
https://postgr.es/m/CAKcux6ktu-8tefLWtQuuZBYFaZA83vUzuRd7c1YHC-yEWyYFpg@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/7cfdc77023ad50731723e85c215a4127436ed09c

Amit Kapila pushed:

- Fix pg_verify_checksums on Windows. To verify the checksums, we open the file
in text mode which doesn't work on Windows as WIN32 treats Control-Z as EOF in
files opened in text mode. This leads to "short read of block .." error in
some cases. Fix it by opening the files in the binary mode. Author: Amit
Kapila Reviewed-by: Magnus Hagander Backpatch-through: 11 Discussion:
https://postgr.es/m/CAA4eK1+LOnzod+h85FGmyjWzXKy-XV1FYwEyP-Tky2WpD5cxwA@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/bb60f2cb6ed8361fbf18b92d312776046d9b0103

Alexander Korotkov pushed:

- Enforce cube dimension limit in all cube construction functions. contrib/cube
has a limit to 100 dimensions for cube datatype. However, it's not enforced
everywhere, and one can actually construct cube with more than 100 dimensions
having then trouble with dump/restore. This commit add checks for dimensions
limit in all functions responsible for cube construction. Backpatch to all
supported versions. Reported-by: Andrew Gierth Discussion:
https://postgr.es/m/87va7uybt4.fsf%40news-spur.riddles.org.uk Author: Andrey
Borodin with small additions by me Review: Tom Lane Backpatch-through: 9.3
https://git.postgresql.org/pg/commitdiff/f919c165ebdc2f85e4584e959e002705a5a0a774

- Split contrib/cube platform-depended checks into separate test. We're
currently maintaining two outputs for cube regression test. But that appears
to be unsuitable, because these outputs are different in out few checks
involving scientific notation. So, split checks involving scientific notation
into separate test, making contrib/cube easier to maintain. Backpatch to all
supported versions in order to make further backpatching easier. Discussion:
https://postgr.es/m/CAPpHfdvJgWjxHsJTtT%2Bo1tz3OR8EFHcLQjhp-d3%2BUcmJLh-fQA%40mail.gmail.com
Author: Alexander Korotkov Backpatch-through: 9.3
https://git.postgresql.org/pg/commitdiff/38970ce862b906d3b6e3745bff8c75edad378de3

- Implement "pg_ctl logrotate" command. Currently there are two ways to trigger
log rotation in logging collector process: call pg_rotate_logfile()
SQL-function or send SIGUSR1 signal directly to logging collector process.
However, it's nice to have more suitable way for external tools to do that,
which wouldn't require SQL connection or knowledge of logging collector pid.
This commit implements triggering log rotation by "pg_ctl logrotate" command.
Discussion:
https://postgr.es/m/20180416.115435.28153375.horiguchi.kyotaro%40lab.ntt.co.jp
Author: Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov
https://git.postgresql.org/pg/commitdiff/ec74369931687885cfb6ce9dac55deefdb410086

Andres Freund pushed:

- Fix 8a934d677 for libc++ and make more include order resistant. The previous
definition was used in C++ mode, which causes problems when using clang with
libc++ (rather than libstdc++), due to bugs therein. So just avoid in C++
mode. A second problem is that depending on include order and implicit
includes the previous definition did not guarantee that the current hack was
effective by the time isinf was used, fix that by forcing math.h to be
included. This can cause clang using builds, or gcc using ones with JIT
enabled, to slow down noticably. It's likely that we at some point want a
better solution for the performance problem, but while it's there it should
better work. Reported-By: Steven Winfield Bug: #15270 Discussion:
https://postgr.es/m/153116283147.1401.360416241833049560@wrigleys.postgresql.org
Author: Andres Freund Backpatch: 11, like the previous commit.
https://git.postgresql.org/pg/commitdiff/5758685c9f1a51b0a77ae8f415a57670941f2c4b

Noah Misch pushed:

E Ignore server-side delays when enforcing wal_sender_timeout. Healthy clients
of servers having poor I/O performance, such as buildfarm members hamster and
tern, saw unexpected timeouts. That disagreed with documentation. This fix
adds one gettimeofday() call whenever ProcessRepliesIfAny() finds no client
reply messages. Back-patch to 9.4; the bug's symptom is rare and mild, and
the code all moved between 9.3 and 9.4. Discussion:
https://postgr.es/m/20180826034600.GA1105084@rfd.leadboat.com
https://git.postgresql.org/pg/commitdiff/ab0ed6153a58294143d6d66ec5f3471477c59d57

== Pending Patches ==

Daniel Gustafsson sent in another revision of a patch to refactor the backend
signalling code and use the new structure to support an optional message in
backend cancel/terminate.

Konstantin Knizhnik sent in another revision of a patch to implement an internal
connection pooler.

Bradley DeJong sent in another revision of a patch to document the fact that as
of version 3.0 of the wire protocol, the terminal '\.' for COPY is both optional
and deprecated.

Kyotaro HORIGUCHI sent in another revision of a patch to ensure that the
checkpointer not update shared FPW flag during recovery, set the correct value
of full_page_write reloaded during recovery, and ensure that startup process
ignores SIGHUP.

Daniel Vérité sent in another revision of a patch to add a csv output format to
psql.

Surafel Temesgen sent in two more revisions of a patch to add a PERCENT option
to the FETCH FIRST clause.

Ashutosh Bapat sent in another revision of a patch to implement the
TupleTableSlot abstraction.

Noriyoshi Shinoda sent in two more revisions of a patch to add work_mem as a
setting for the PostgreSQL FDW.

Yugo Nagata sent in another revision of a patch to refactor
textToQualifiedNameList().

Andres Freund and Tom Lane traded patches to fix a problem where lmgr.c was
falsely assuming that AcceptInvalidationMessages is an atomic operation.

Alexander Korotkov sent in another revision of a patch to implement
k-Nearest-Neighbor for SP-GiST.

Masahiko Sawada sent in another revision of a patch to implement a copy function
for logical and physical replication slots.

Naoki Yotsunaga sent in another revision of a patch to add an automatic restore
point.

Peter Eisentraut sent in another revision of a patch to add GnuTLS support for
TLS connections.

Antonin Houska sent in another revision of a patch to implement aggregate
pushdown.

Peter Eisentraut sent in two more revisions of a patch to remove ancient
pre-dlopen dynloader code.

Dilip Kumar sent in another revision of a patch to implement UNDO logs.

Peter Eisentraut sent in another revision of a patch to allow using file cloning
in pg_upgrade and CREATE DATABASE where that capability is available.

Thomas Munro sent in another revision of a patch to add a WL_EXIT_ON_PM_DEATH
pseudo-event and clean up places that mishandled postmaster death.

David Rowley sent in two revisions of a patch to fix typos in typcache.c

Peter Eisentraut sent in a patch to PL/PythonU to remove use of simple slicing
API.

Peter Eisentraut sent in two revisions of a patch to add error position support
for defaults, check constraints, and partition specifications, and adds location
support to Value nodes, using same to add error position support to the COPY
command.

Marín Fernández sent in a patch to Fix formatting in pg_upgrade manpage docs
location support to Value nodes, using same to add error position support to the
COPY command.

Martín Fernández sent in a patch to fix the formatting in the pg_upgrade manpage
doc.

Dagfinn Ilmari Mannsåker sent in two revisions of a patch to add tab completion
for ALTER DATABASE ... SET TABLESPACE to psql.

Peter Eisentraut sent in a patch to use C99 designated initializers for some
structs.

Masahiko Sawada sent in a patch to implement CREATE ROUTINE MAPPING in
PostgreSQL and use same in the PostgreSQL FDW.

Amit Kapila sent in two revisions of a patch to speed up planning with
partitions.

Alexander Korotkov sent in a patch to add a notion of startup cost to sequential
scans.

Amit Kapila sent in a patch to fix an issue where pg_verify_checksums failed
with hash indexes.

Kyotaro HORIGUCHI sent in two revisions of a patch to refactor the parameters of
GiST insertion routines and fix gistSplit's error message.

Hubert Zhang and Pavel Stěhule traded patches to add a disk quota feature.

Álvaro Herrera sent in a patch to remove pg_constraint.conincluding on grounds
of uselessness.

Browse pgsql-announce by date

  From Date Subject
Next Message Gary Evans 2018-09-02 23:52:57 Postgres Down Under 2018 Call for papers
Previous Message David Fetter 2018-08-26 22:10:41 == PostgreSQL Weekly News - August 26 2018 ==