== PostgreSQL Weekly News - August 16 2015 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - August 16 2015 ==
Date: 2015-08-17 00:47:48
Message-ID: 20150817004748.GA9362@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

== PostgreSQL Weekly News - August 16 2015 ==

== PostgreSQL Jobs for August ==

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

== PostgreSQL Local ==

PostgresOpen 2015 will being held in Dallas, Texas September 16-18.
http://2015.postgresopen.org/

PostgreSQL Session #7, will be held September 24th, 2015 in Paris,
France,
http://www.postgresql-sessions.org/7/about

PGDay.IT 2015 will take place in Prato on October 23, 2015.
http://pgday.it

PostgreSQL Conference Europe 2015 will be held on October 27-30 in the
Vienna Marriott Hotel, in Vienna, Austria.
http://2015.pgconf.eu/

PGConf Silicon Valley 2015 is November 17-18 at the South San
Francisco Convention Center.
http://www.pgconfsv.com

PGBR2015 (The Brazilian PostgreSQL Conference) will take place in Porto
Alegre, Rio Grande do Sul, on November 18, 19 and 20. The CfP is open
until August 31.
http://pgbr.postgresql.org.br/2015/en/#call-for-papers

== 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 Pacific time.
Please send English language ones to david(at)fetter(dot)org, German language
to pwn(at)pgug(dot)de, Italian language to pwn(at)itpug(dot)org(dot) Spanish language
to pwn(at)arpug(dot)com(dot)ar(dot)

== Applied Patches ==

Andres Freund pushed:

- Fix copy & paste mistake in pg_get_replication_slots(). XLogRecPtr
was compared with InvalidTransactionId instead of InvalidXLogRecPtr.
As both are defined to the same value this doesn't cause any actual
problems, but it's still wrong. Backpatch: 9.4-master, bug was
introduced in 9.4
http://git.postgresql.org/pg/commitdiff/5c4b25accebb5d35358bb0c19b841d8d9b064e46

- Don't start to stream after pg_receivexlog --create-slot.
Immediately starting to stream after --create-slot is inconvenient
in a number of situations (e.g. when configuring a slot for use in
recovery.conf) and it's easy to just call pg_receivexlog twice in
the rest of the cases. Author: Michael Paquier Discussion:
CAB7nPqQ9qEtuDiKY3OpNzHcz5iUA+DUX9FcN9K8GUkCZvG7+Ew(at)mail(dot)gmail(dot)com
Backpatch: 9.5, where the option was introduced
http://git.postgresql.org/pg/commitdiff/70fd0e14e806a4d0ed31b19d92e1f9f140ef686d

- Add confirmed_flush column to pg_replication_slots. There's no
reason not to expose both restart_lsn and confirmed_flush since they
have rather distinct meanings. The former is the oldest WAL still
required and valid for both physical and logical slots, whereas the
latter is the location up to which a logical slot's consumer has
confirmed receiving data. Most of the time a slot will require older
WAL (i.e. restart_lsn) than the confirmed position (i.e.
confirmed_flush_lsn). Author: Marko Tiikkaja, editorialized by me
Discussion: 559D110B(dot)1020109(at)joh(dot)to
http://git.postgresql.org/pg/commitdiff/3f811c2d6f51b13b71adff99e82894dd48cee055

- Minor cleanups in slot related code. Fix a bunch of typos, and
remove two superflous includes. Author: Gurjeet Singh Discussion:
CABwTF4Wh_dBCzTU=49pFXR6coR4NW1ynb+vBqT+Po=7fuq5iCw(at)mail(dot)gmail(dot)com
Backpatch: 9.4
http://git.postgresql.org/pg/commitdiff/3b425b7c02ccdabe3fb3a538d9174273a15f1e2e

- Introduce macros determining if a replication slot is physical or
logical. These make the code a bit easier to read, and make it
easier to add a more explicit notion of a slot's type at some point
in the future. Author: Gurjeet Singh Discussion:
CABwTF4Wh_dBCzTU=49pFXR6coR4NW1ynb+vBqT+Po=7fuq5iCw(at)mail(dot)gmail(dot)com
http://git.postgresql.org/pg/commitdiff/093d0c83c1d210167d122da92459a0677e04ffc9

- Handle PQresultErrorField(PG_DIAG_SQLSTATE) returning NULL in
streamutil.c. In ff27db5d I missed that PQresultErrorField() may
return NULL if there's no sqlstate associated with an error.
Spotted-By: Coverity Reported-By: Michael Paquier Discussion:
CAB7nPqQ3o10SY6NVdU4pjq85GQTN5tbbkq2gnNUh2fBNU3rKyQ(at)mail(dot)gmail(dot)com
Backpatch: 9.5, like ff27db5d
http://git.postgresql.org/pg/commitdiff/7685963eeb16c377c2e0ff7b1852b7a8bc527270

- Fix two off-by-one errors in bufmgr.c. In 4b4b680c I passed a
buffer index number (starting from 0) instead of a proper Buffer id
(which start from 1 for shared buffers) in two places. This wasn't
noticed so far as one of those locations isn't compiled at all
(PrintPinnedBufs) and the other one (InvalidBuffer) requires a
unlikely, but possible, set of circumstances to trigger a symptom.
To reduce the likelihood of such incidents a bit also convert
existing open coded mappings from buffer descriptors to buffer ids
with BufferDescriptorGetBuffer(). Author: Qingqing Zhou
Reported-By: Qingqing Zhou Discussion:
CAJjS0u2ai9ooUisKtkV8cuVUtEkMTsbK8c7juNAjv8K11zeCQg(at)mail(dot)gmail(dot)com
Backpatch: 9.5 where the private ref count infrastructure was
introduced
http://git.postgresql.org/pg/commitdiff/d25fbf9f3ecffb5c80a9201a6310e74da24556a4

- Remove duplicated assignment in pg_create_physical_replication_slot.
Reported-By: Gurjeet Singh
http://git.postgresql.org/pg/commitdiff/a4b059fddecefd5f473e539b28277874ab83f32f

- Allow pg_create_physical_replication_slot() to reserve WAL. When
creating a physical slot it's often useful to immediately reserve
the current WAL position instead of only doing after the first
feedback message arrives. That e.g. allows slots to guarantee that
all the WAL for a base backup will be available afterwards. Logical
slots already have to reserve WAL during creation, so generalize
that logic into being usable for both physical and logical slots.
Catversion bump because of the new parameter. Author: Gurjeet Singh
Reviewed-By: Andres Freund Discussion:
CABwTF4Wh_dBCzTU=49pFXR6coR4NW1ynb+vBqT+Po=7fuq5iCw(at)mail(dot)gmail(dot)com
http://git.postgresql.org/pg/commitdiff/6fcd88511f8e69e38defb1272e0042ef4bab2feb

- Use the correct type for TableInfo->relreplident. Mistakenly
relreplident was stored as a bool. That works today as c.h typedefs
bool to a char, but isn't very future proof. Discussion:
20150812084351(dot)GD8470(at)awork2(dot)anarazel(dot)de Backpatch: 9.4 where
replica identity was introduced.
http://git.postgresql.org/pg/commitdiff/a8015fe7f54c6410866d3751783c48e0dabfacde

- Don't use 'bool' as a struct member name in help_config.c. Doing so
doesn't work if bool is a macro rather than a typedef. Although c.h
spends some effort to support configurations where bool is a
preexisting macro, help_config.c has existed this way since 2003
(b700a6), and there have not been any reports of problems. Backpatch
anyway since this is as riskless as it gets. Discussion:
20150812084351(dot)GD8470(at)awork2(dot)anarazel(dot)de Backpatch: 9.0-master
http://git.postgresql.org/pg/commitdiff/6c772c7453e3e1fa97e3ef0d7e90b22c7f4ea721

- vacuumdb: Don't assign negative values to a boolean. Since
a17923204736 (vacuumdb: enable parallel mode) -1 has been assigned
to a boolean. That can, justifiedly, trigger compiler warnings.
There's also no need for ternary logic, result was only ever set to
0 or -1. So don't. Discussion:
20150812084351(dot)GD8470(at)awork2(dot)anarazel(dot)de Backpatch: 9.5
http://git.postgresql.org/pg/commitdiff/1d4bd77568493309914217251dce5bd51f4a72b7

- Correct type of waitMode variable in ExecInsertIndexTuples(). It
was a bool, even though it should be CEOUC_WAIT_MODE. That's
unlikely to have a negative effect with the current definition of
bool (char), but it's definitely wrong. Discussion:
20150812084351(dot)GD8470(at)awork2(dot)anarazel(dot)de Backpatch: 9.5, where ON
CONFLICT was merged
http://git.postgresql.org/pg/commitdiff/f9dec81a5493bc31fdbbf69b5fafe0d4452a38f1

- Don't use function definitions looking like old-style ones. This
fixes a bunch of somewhat pedantic warnings with new compilers.
Since by far the majority of other functions definitions use the
(void) style it just seems to be consistent to do so as well in the
remaining few places.
http://git.postgresql.org/pg/commitdiff/e95126cf048b08d7ff5eb72ec33737e9e27c08f8

Andrew Dunstan pushed:

- Work around an apparent bug in the Msys DTK perl's regex engine.
Several versions of the perl that comes with the Msys DTK have been
found to have a bug that fails to recognize a ' before a multiline $
in some circumstances. To work around the problem, use a character
class for the '. Another solution would have been to use \n instead
of $, but that would have changed the test semantics very slightly.
http://git.postgresql.org/pg/commitdiff/e7293e3271bf618eeb2d4779a15fc516a69fe463

- More fixes to allow pg_rewind tests to run on Msys.
http://git.postgresql.org/pg/commitdiff/15c3a1b45b480f6478555e9ddbc6093bd031d12c

Tom Lane pushed:

- Temporarily(?) remove BRIN isolation test. Commit 2834855cb added a
not-very-carefully-thought-out isolation test to check a BRIN index
bug fix. The test depended on the availability of the pageinspect
contrib module, which meant it did not work in several common
testing scenarios such as "make check-world". It's not clear
whether we want a core test depending on a contrib module like that,
but in any case, failing to deal with the possibility that the
module isn't present in the installation-under-test is not
acceptable. Remove that test pending some better solution.
http://git.postgresql.org/pg/commitdiff/6a1e14c62b739a754335c088474e12f42a6763bd

- Further mucking with PlaceHolderVar-related restrictions on join
order. Commit 85e5e222b1dd02f135a8c3bf387d0d6d88e669bd turns out
not to have taken care of all cases of the
partially-evaluatable-PlaceHolderVar problem found by Andreas
Seltenreich's fuzz testing. I had set it up to check for risky PHVs
only in the event that we were making a star-schema-based exception
to the param_source_rels join ordering heuristic. However, it turns
out that the problem can occur even in joins that satisfy the
param_source_rels heuristic, in which case allow_star_schema_join()
isn't consulted. Refactor so that we check for risky PHVs whenever
the proposed join has any remaining parameterization. Back-patch to
9.2, like the previous patch (except for the regression test case,
which only works back to 9.3 because it uses LATERAL). Note that
this discovery implies that problems of this sort could've occurred
in 9.2 and up even before the star-schema patch; though I've not
tried to prove that experimentally.
http://git.postgresql.org/pg/commitdiff/4200a92862604d6fcb726fbe7a3e2b38c1dc6837

- Accept alternate spellings of __sparcv7 and __sparcv8. Apparently
some versions of gcc prefer __sparc_v7__ and __sparc_v8__. Per
report from Waldemar Brodkorb.
http://git.postgresql.org/pg/commitdiff/1f64ec6fd28bcd2be9b6b0ad3a5a630e117db601

- Fix privilege dumping from servers too old to have that type of
privilege. pg_dump produced fairly silly GRANT/REVOKE commands when
dumping types from pre-9.2 servers, and when dumping functions or
procedural languages from pre-7.3 servers. Those server versions
lack the typacl, proacl, and/or lanacl columns respectively, and
pg_dump substituted default values that were in fact incorrect. We
ended up revoking all the owner's own privileges for the object
while granting all privileges to PUBLIC. Of course the owner would
then have those privileges again via PUBLIC, so long as she did not
try to revoke PUBLIC's privileges; which may explain the lack of
field reports. Nonetheless this is pretty silly behavior. The
stakes were raised by my recent patch to make pg_dump dump shell
types, because 9.2 and up pg_dump would proceed to emit bogus
GRANT/REVOKE commands for a shell type if dumping from a pre-9.2
server; and the server will not accept GRANT/REVOKE commands for a
shell type. (Perhaps it should, but that's a topic for another
day.) So the resulting dump script wouldn't load without errors.
The right thing to do is to act as though these objects have default
privileges (null ACL entries), which causes pg_dump to print no
GRANT/REVOKE commands at all for them. That fixes the silly results
and also dodges the problem with shell types. In passing, modify
getProcLangs() to be less creatively different about how to handle
missing columns when dumping from older server versions. Every
other data-acquisition function in pg_dump does that by substituting
appropriate default values in the version-specific SQL commands, and
I see no reason why this one should march to its own drummer. Its
use of "SELECT *" was likewise not conformant with anyplace else,
not to mention it's not considered good SQL style for production
queries. Back-patch to all supported versions. Although 9.0 and
9.1 pg_dump don't have the issue with typacl, they are more likely
than newer versions to be used to dump from ancient servers, so we
ought to fix the proacl/lanacl issues all the way back.
http://git.postgresql.org/pg/commitdiff/b861678f50747727c00ffa671e7c2f2f5d25300d

- Fix broken markup, and copy-edit a bit. Fix docs build failure
introduced by commit 6fcd88511f8e69e3. I failed to resist the
temptation to rearrange the description of
pg_create_physical_replication_slot(), too.
http://git.postgresql.org/pg/commitdiff/750fc78bca7c5cff7459d02315cf7fed4f4ce3a9

- Postpone extParam/allParam calculations until the very end of
planning. Until now we computed these Param ID sets at the end of
subquery_planner, but that approach depends on subquery_planner
returning a concrete Plan tree. We would like to switch over to
returning one or more Paths for a subquery, and in that
representation the necessary details aren't fully fleshed out (not
to mention that we don't really want to do this work for Paths that
end up getting discarded). Hence, refactor so that we can compute
the param ID sets at the end of planning, just before
set_plan_references is run. The main change necessary to make this
work is that we need to capture the set of outer-level Param IDs
available to the current query level before exiting
subquery_planner, since the outer levels' plan_params lists are
transient. (That's not going to pose a problem for returning Paths,
since all the work involved in producing that data is part of
expression preprocessing, which will continue to happen before Paths
are produced.) On the plus side, this change gets rid of several
existing kluges. Eventually I'd like to get rid of SS_finalize_plan
altogether in favor of doing this work during set_plan_references,
but that will require some complex rejiggering because
SS_finalize_plan needs to visit subplans and initplans before the
main plan. So leave that idea for another day.
http://git.postgresql.org/pg/commitdiff/68fa28f77146653f1fcaa530d2f2f161bf5de479

- Fix some possible low-memory failures in regexp compilation.
newnfa() failed to set the regex error state when malloc() fails.
Several places in regcomp.c failed to check for an error after
calling subre(). Each of these mistakes could lead to
null-pointer-dereference crashes in memory-starved backends. Report
and patch by Andreas Seltenreich. Back-patch to all branches.
http://git.postgresql.org/pg/commitdiff/8a0258c31808c514755e3bba03cb052084c4887c

- Undo mistaken tightening in join_is_legal(). One of the changes I
made in commit 8703059c6b55c427 turns out not to have been such a
good idea: we still need the exception in join_is_legal() that
allows a join if both inputs already overlap the RHS of the special
join we're checking. Otherwise we can miss valid plans, and might
indeed fail to find a plan at all, as in recent report from Andreas
Seltenreich. That code was added way back in commit
c17117649b9ae23d, but I failed to include a regression test case
then; my bad. Put it back with a better explanation, and a test
this time. The logic does end up a bit different than before
though: I now believe it's appropriate to make this check first,
thereby allowing such a case whether or not we'd consider the
previous SJ(s) to commute with this one. (Presumably, we already
decided they did; but it was confusing to have this consideration in
the middle of the code that was handling the other case.) Back-patch
to all active branches, like the previous patch.
http://git.postgresql.org/pg/commitdiff/cfe30a72fa80528997357cb0780412736767e8c4

- Improve regression test case to avoid depending on system catalog
stats. In commit 95f4e59c32866716 I added a regression test case
that examined the plan of a query on system catalogs. That isn't a
terribly great idea because the catalogs tend to change from version
to version, or even within a version if someone makes an unrelated
regression-test change that populates the catalogs a bit
differently. Usually I try to make planner test cases rely on test
tables that have not changed since Berkeley days, but I got sloppy
in this case because the submitted crasher example queried the
catalogs and I didn't spend enough time on rewriting it. But it was
a problem waiting to happen, as I was rudely reminded when I tried
to port that patch into Salesforce's Postgres variant :-(. So spend
a little more effort and rewrite the query to not use any system
catalogs. I verified that this version still provokes the Assert if
95f4e59c32866716's code fix is reverted. I also removed the EXPLAIN
output from the test, as it turns out that the assertion occurs
while considering a plan that isn't the one ultimately selected
anyway; so there's no value in risking any cross-platform variation
in that printout. Back-patch to 9.2, like the previous patch.
http://git.postgresql.org/pg/commitdiff/6a0779a397a5ec44a37d3f7d1b2e4c4359e06c2f

- Repair unsafe use of shared typecast-lookup table in plpgsql DO
blocks. DO blocks use private simple_eval_estates to avoid
intra-transaction memory leakage, cf commit c7b849a89. I had
forgotten about that while writing commit 0fc94a5ba, but it means
that expression execution trees created within a DO block disappear
immediately on exiting the DO block, and hence can't safely be
linked into plpgsql's session-wide cast hash table. To fix, give a
DO block a private cast hash table to go with its private
simple_eval_estate. This is less efficient than one could wish,
since DO blocks can no longer share any cast lookup work with other
plpgsql execution, but it shouldn't be too bad; in any case it's no
worse than what happened in DO blocks before commit 0fc94a5ba. Per
bug #13571 from Feike Steenbergen. Preliminary analysis by
Oleksandr Shulgin.
http://git.postgresql.org/pg/commitdiff/83604cc42353b6c0de2a3f3ac31f94759a9326ae

- Improve documentation about MVCC-unsafe utility commands. The
table-rewriting forms of ALTER TABLE are MVCC-unsafe, in much the
same way as TRUNCATE, because they replace all rows of the table
with newly-made rows with a new xmin. (Ideally, concurrent
transactions with old snapshots would continue to see the old table
contents, but the data is not there anymore --- and if it were
there, it would be inconsistent with the table's updated rowtype, so
there would be serious implementation problems to fix.) This was
nowhere documented though, and the problem was only documented for
TRUNCATE in a note in the TRUNCATE reference page. Create a new
"Caveats" section in the MVCC chapter that can be home to this and
other limitations on serializable consistency. In passing, fix a
mistaken statement that VACUUM and CLUSTER would reclaim space
occupied by a dropped column. They don't reconstruct existing
tuples so they couldn't do that. Back-patch to all supported
branches.
http://git.postgresql.org/pg/commitdiff/5869cbfef48fdfa6b8f108c6c395601e8ad27250

- Add docs about postgres_fdw's setting of search_path and other GUCs.
This behavior wasn't documented, but it should be because it's
user-visible in triggers and other functions executed on the remote
server. Per question from Adam Fuchs. Back-patch to 9.3 where
postgres_fdw was added.
http://git.postgresql.org/pg/commitdiff/522400a5198f63823406202e18fdaf3621619d98

Álvaro Herrera pushed:

- Don't include rel.h when relcache.h is sufficient. Trivial change
to reduce exposure of rel.h.
http://git.postgresql.org/pg/commitdiff/4901b2f49536f439f79d067a9b30a7a837d6c72b

- Close some holes in BRIN page assignment. In some corner cases, it
is possible for the BRIN index relation to be extended by
brin_getinsertbuffer but the new page not be used immediately for
anything by its callers; when this happens, the page is initialized
and the FSM is updated (by brin_getinsertbuffer) with the info about
that page, but these actions are not WAL-logged. A later index
insert/update can use the page, but since the page is already
initialized, the initialization itself is not WAL-logged then
either. Replay of this sequence of events causes recovery to fail
altogether. There is a related corner case within
brin_getinsertbuffer itself, in which we extend the relation to put
a new index tuple there, but later find out that we cannot do so,
and do not return the buffer; the page obtained from extension is
not even initialized. The resulting page is lost forever. To fix,
shuffle the code so that initialization is not the responsibility of
brin_getinsertbuffer anymore, in normal cases; instead, the
initialization is done by its callers (brin_doinsert and
brin_doupdate) once they're certain that the page is going to be
used. When either those functions determine that the new page
cannot be used, before bailing out they initialize the page as an
empty regular page, enter it in FSM and WAL-log all this. This way,
the page is usable for future index insertions, and WAL replay
doesn't find trying to insert tuples in pages whose initialization
didn't make it to the WAL. The same strategy is used in
brin_getinsertbuffer when it cannot return the new page.
Additionally, add a new step to vacuuming so that all pages of the
index are scanned; whenever an uninitialized page is found, it is
initialized as empty and WAL-logged. This closes the hole that the
relation is extended but the system crashes before anything is
WAL-logged about it. We also take this opportunity to update the
FSM, in case it has gotten out of date. Thanks to Heikki
Linnakangas for finding the problem that kicked some additional
analysis of BRIN page assignment code. Backpatch to 9.5, where BRIN
was introduced. Discussion:
https://www.postgresql.org/message-id/20150723204810.GY5596@postgresql.org
http://git.postgresql.org/pg/commitdiff/ccc4c074994d734aefb9810af79a762df3c0e974

- Fix unitialized variables. As complained by clang, reported by
Andres Freund. Brown paper bag bug in ccc4c074994d. Add some
comments, too. Backpatch to 9.5, like that one.
http://git.postgresql.org/pg/commitdiff/fcbf455842eac10c331a866f559bb3875bcb8c37

- Use materialize SRF mode in brin_page_items. This function was
using the single-value-per-call mechanism, but the code relied on a
relcache entry that wasn't kept open across calls. This manifested
as weird errors in buildfarm during the short time that the "brin-1"
isolation test lived. Backpatch to 9.5, where it was introduced.
http://git.postgresql.org/pg/commitdiff/94d626ff5a82422825976c096e250b07657cd6f7

- Re-add BRIN isolation test. This time, instead of using a core
isolation test, put it on its own test module; this way it can
require the pageinspect module to be present before running. The
module's Makefile is loosely modeled after test_decoding's, so that
it's easy to add further tests for either pg_regress or
isolationtester later. Backpatch to 9.5.
http://git.postgresql.org/pg/commitdiff/672e3ec0e93e3d2d5549b95f73b2a3ab58714146

- MSVC: Exclude 'brin' contrib module. The build script is not able
to parse the Makefile, so remove it.
http://git.postgresql.org/pg/commitdiff/d67616c74395aede8795e785d565b96b735f3f6e

Michael Meskes pushed:

- Fix declaration of isarray variable. Found and fixed by Andres
Freund.
http://git.postgresql.org/pg/commitdiff/c396f2b83dbf2af9a6b3fa137f73017f5dcf7266

Heikki Linnakangas pushed:

- Run autoheader to add a few missing #defines to pg_config.h.in.
These are emitted by the new ax_pthread.m4 script version. They are
not used for anything in PostgreSQL, but let's keep the generated
header file up-to-date. Andres Freund
http://git.postgresql.org/pg/commitdiff/36e863bbd42f5815cecbda2397950ea1ca36a81a

Peter Eisentraut pushed:

- PL/Python: Make tests pass with Python 3.5. The error message
wording for AttributeError has changed in Python 3.5. For the
plpython_error test, add a new expected file. In the
plpython_subtransaction test, we didn't really care what the
exception is, only that it is something coming from Python. So use
a generic exception instead, which has a message that doesn't vary
across versions.
http://git.postgresql.org/pg/commitdiff/f16d52269a196f7f303abe3b978d95ade265f05f

- Update key words table for 9.5
http://git.postgresql.org/pg/commitdiff/845405a7d8dc79f498fe77e3aeeb02ef841b0196

Noah Misch pushed:

- Encoding PG_UHC is code page 949. This fixes presentation of
non-ASCII messages to the Windows event log and console in rare
cases involving Korean locale. Processes like the postmaster and
checkpointer, but not processes attached to databases, were
affected. Back-patch to 9.4, where MessageEncoding was introduced.
The problem exists in all supported versions, but this change has no
effect in the absence of the code recognizing PG_UHC
MessageEncoding. Noticed while investigating bug #13427 from Dmitri
Bourlatchkov.
http://git.postgresql.org/pg/commitdiff/ec79978dd059d51c8c28efae949d115987588011

- Restore old pgwin32_message_to_UTF16() behavior outside
transactions. Commit 49c817eab78c6f0ce8c3bf46766b73d6cf3190b7
replaced with a hard error the dubious pg_do_encoding_conversion()
behavior when outside a transaction. Reintroduce the historic soft
failure locally within pgwin32_message_to_UTF16(). This fixes
errors when writing messages in less-common encodings to the Windows
event log or console. Back-patch to 9.4, where the aforementioned
commit first appeared. Per bug #13427 from Dmitri Bourlatchkov.
http://git.postgresql.org/pg/commitdiff/43adc7a7147da2404bd4df0d8a93ca3bd3a8adc6

Robert Haas pushed:

- Reject isolation test specifications with duplicate step names.
alter-table-1.spec has such a case, so change one instance of step
rx1 to rx3 instead.
http://git.postgresql.org/pg/commitdiff/43b4a16817c8b5568cec72f3b0e1c8209f5ac7f7

- Remove bogus step from test_decoding isolation tests. Commit
43b4a16817c8b5568cec72f3b0e1c8209f5ac7f7 made the isolation tester
reject duplicate step names, and it turns out that the test_decoding
module's concurrent_ddl_dml isolation test has a duplicate name. I
think the second definition isn't actually getting used, so just
remove it. Per buildfarm.
http://git.postgresql.org/pg/commitdiff/5243a35825cf32db5863459be1f3afcc6b6461e0

- Remove unused expected-output file.
http://git.postgresql.org/pg/commitdiff/8bd42fe5c715c478a4b3ceb77cb28ef9f18b5486

Simon Riggs pushed:

- Reduce lock levels for ALTER TABLE SET autovacuum storage options.
Reduce lock levels down to ShareUpdateExclusiveLock for all
autovacuum-related relation options when setting them using ALTER
TABLE. Add infrastructure to allow varying lock levels for relation
options in later patches. Setting multiple options together uses the
highest lock level required for any option. Works for both main and
toast tables. Fabrízio Mello, reviewed by Michael Paquier, mild
edit and additional regression tests from myself
http://git.postgresql.org/pg/commitdiff/47167b7907a802ed39b179c8780b76359468f076

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Franck Verrot sent in a patch to mention column name in error
messages.

Jeff Janes sent in a patch to adjust the documentation of
gin_leafpage_items in the pageinspect extension to specify that only
compressed pages are supported.

Bruce Momjian sent in a patch to fix a bug where pg_upgrade fails when
postgres/template1 isn't in default tablespace.

Jeff Janes sent in a patch to fix the FSM versus GIN pending list
bloat issue.

Fabien COELHO sent in three more revisions of a patch to add a
checkpoint_sort GUC.

Jeff Janes sent in another revision of a patch to make more sane
default statistics for array types.

Fabien COELHO sent in a patch to fix a bug in pgbench where gbench
does not report skipped transactions (-L) counts properly.

Michael Paquier sent in a patch to fix a situation with
TransactionIdGetCommitTsData and its dereferenced pointers.

Ashutosh Bapat sent in two more revisions of a patch to add a contrib
module to launch foreign transaction resolver to resolve unresolved
transactions prepared on foreign servers.

Jeff Janes sent in two revisions of a patch to make GIN pending clean
up interruptible.

Michael Paquier sent in another revision of a patch to allow using
SCRAM authentication instead of MD5 password hashing.

Andres Freund sent in a patch to convert fastgetattr() and
heap_getattr() into inline functions. This is in service of upping
the compiler requirements for 9.6 and later.

Etsuro Fujita and Kaigai Kouhei traded patches for evaluating qual
pushdowns to foreign servers and fixing their relationship to
EvalPlanQual.

Andres Freund sent in a patch to change some buffer and page related
macros to inline functions.

Jeff Janes sent in a patch to expose GIN pending list clean up to SQL.

Pavel Stěhule sent in another revision of a patch to add a libpq
context filter.

Marko Tiikkaja sent in a patch to add a count_nulls(VARIADIC "any").

Taiki Kondo sent in a patch to implement a hash join pushdown for
tables partitioned by hash.

Pavel Stěhule sent in another revision of a patch to add a
--strict-names option to pg_dump.

Haribabu Kommi sent in a PoC patch to implement more isolated
multi-tenancy via RLS.

Michael Paquier sent in two more revisions of a patch to add
regression tests for recovery.

Andrew Dunstan sent in two more revisions of a patch to fix TAP tests
on Windows.

Robert Haas sent in a patch to allow the isolation tester to run with
more than one waiting process.

Dickson S. Guedes sent in a patch to allow, "semester" in date_part,
etc., which turned out to be local. Current trends go towards "half,"
which is less ambiguous in its meaning.

Andres Freund sent in a WIP patch to decrease usage of lock.h further.
This is part of the drive toward requiring more recent compilers for
9.6+.

Marko Tiikkaja sent in a patch to add support for RADIUS passwords
longer than 16 octets.

David Rowley sent in a patch to improve how get_base_rel_indexes()
works by changing its return type and adding a parameter.

Browse pgsql-announce by date

  From Date Subject
Next Message David Fetter 2015-08-23 23:05:52 == PostgreSQL Weekly News - August 23 2015 ==
Previous Message David Fetter 2015-08-10 04:21:08 == PostgreSQL Weekly News - August 09 2015 ==