PostgreSQL Weekly News – March 20 2011

== PostgreSQL Weekly News – March 20 2011 ==

PostgreSQL was accepted as a mentoring organization for Google Summer
of Code 2011! If you are a student interested in applying,
applications open March 28, 2011. Details and ideas for projects here:

== PostgreSQL Product News ==

bucardo 4.4.2, a PostgreSQL replication system, released:

tail_n_mail 1.17.6, a log file alerting tool, released:

== PostgreSQL Jobs for March ==

== PostgreSQL Local ==

PostgreSQL Conference East 2011: NYC March 22nd – 25th

There will be a large PostgreSQL presence at the MySQL Conference and
Expo, April 11-14, 2011 in Santa Clara, California.

Open Database Camp will be on May 7-9, 2011 in Sardinia, Italy

PGCon will be May 19-20, 2011 at the University of Ottawa, preceded by
two days of tutorials on May 17-18.

== PostgreSQL in the News ==

Planet PostgreSQL:

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, German language
to, Italian language to Spanish language

== Reviews ==

== Applied Patches ==

Bruce Momjian pushed:

– Remove duplicate time-based macros recently added.

– Add database comments to template0 and postgres databases, and
improve the comments on the template1 database. No catalog version
bump because they are just comments.

– Wording adjustment for restart_after_crash entry Specifically,
mention that “restart” is disabled by this parameter.

– Fix spelling error in fuzzystrmatch docs.

– Add hint suggesting the use of EXECUTE CREATE TABLE … AS for

– Adjust doc wording about the casting exceptions for composite types.

– Remove unused copy_dir() function from pg_upgrade.

– Document guc context values, and reference them from the config doc
section. Tom Lane.

– Document the all-balls IPv6 address.

– Document that the timestamp returned by
pg_last_xact_replay_timestamp is the time on the primary that the
transaction was generated.

– Remove “all balls” mention of network address; change IPv6 address
to ::/0.

– Initial version of PostgreSQL 9.1 release notes.

– Add SGML markup for keywords, terms, functions, commands, etc.

– Add links to documentation from 9.1 release notes.

– Move PITR and StreamingRep up one level of heading in the 9.1
release notes. Remove excessive linking to pg_ctl manual page.
Reorder incompatibility sections.

– Reorder some 9.1 release item documentation entries, fix some
awkward wording.

– Fix snapshot isolation level typo in 9.1 release notes. Thom Brown

– Another 9.1 release note typo fix.

– Markup and wording improvements for 9.1 release notes.

Tom Lane pushed:

– Adjust regression test to avoid platform-dependent failure. We have
a test that verifies that max(anyarray) will cope if the array
column elements aren’t all the same array type. However, it’s now
possible for that to produce a collation-related error message
instead of the expected one, if the first two column elements happen
to be of the same type and it’s one that expects to be given
collation info. Tweak the test to ensure this doesn’t happen. Per
buildfarm member pika.

– Improve handling of unknown-type literals in UNION/INTERSECT/EXCEPT.
This patch causes unknown-type Consts to be coerced to the resolved
output type of the set operation at parse time. Formerly such
Consts were left alone until late in the planning stage. The
disadvantage of that approach is that it disables some
optimizations, because the planner sees the set-op leaf query as
having different output column types than the overall set-op. We
saw an example of that in a recent performance gripe from Claudio
Freire. Fixing such a Const requires scribbling on the leaf query
in transformSetOperationTree, but that should be all right since if
the leaf query’s semantics depended on that output column, it would
already have resolved the unknown to something else. Most of the
bulk of this patch is a simple adjustment of
transformSetOperationTree’s API so that upper levels can get at the
TargetEntry containing a Const to be replaced: it now returns a list
of TargetEntries, instead of just the bare expressions.

– Revise collation derivation method and expression-tree
representation. All expression nodes now have an explicit
output-collation field, unless they are known to only return a
noncollatable data type (such as boolean or record). Also, nodes
that can invoke collation-aware functions store a separate field
that is the collation value to pass to the function. This avoids
confusion that arises when a function has collatable inputs and
noncollatable output type, or vice versa. Also, replace the
parser’s on-the-fly collation assignment method with a post-pass
over the completed expression tree. This allows us to use a more
complex (and hopefully more nearly spec-compliant) assignment rule
without paying for it in extra storage in every expression node.
Fix assorted bugs in the planner’s handling of collations by making
collation one of the defining properties of an EquivalenceClass and
by converting CollateExprs into discardable RelabelType nodes during
expression preprocessing.

– Fix up handling of C/POSIX collations. Install just one instance of
the “C” and “POSIX” collations into pg_collation, rather than one
per encoding. Make these instances exist and do something useful
even in machines without locale_t support: to wit, it’s now possible
to force comparisons and case-folding functions to use C locale in
an otherwise non-C database, whether or not the platform has support
for using any additional collations. Fix up severely broken
upper/lower/initcap functions, too: the C/POSIX fastpath now does
what it is supposed to, and non-default collations are handled
correctly in single-byte database encodings. Merge the two separate
collation hashtables that were being maintained in pg_locale.c, and
be more wary of the possibility that we fail partway through filling
a cache entry.

– Suppress platform-dependent unused-variable warning. The local
variable “sock” can be unused depending on compilation flags. But
there seems no particular need for it, since the kernel calls can
just as easily say port->sock instead.

– Add some platform-independent tests for the collation feature.
There’s a lot we can’t test very well without platform dependencies,
but the C/POSIX collations should now work the same way everywhere.

Magnus Hagander pushed:

– Remove special case allowing parameters to ident auth for initdb.
This was required in pre-8.4 versions to allow the specification of
“ident sameuser”, but sameuser is no longer required. It could be
extended to allow all parameters in the future, but should then
apply to all methods and not just ident.

– Properly clear the verbose output of pg_basebackup. Don’t leave
partial filename information on the last status or dangling
characters if the previous filename was longer than the current one.

– Rename ident authentication over local connections to peer. This
removes an overloading of two authentication options where one is
very secure (peer) and one is often insecure (ident). Peer is also
the name used in libpq from 9.1 to specify the same type of
authentication. Also make initdb select peer for local connections
when ident is chosen, and ident for TCP connections when peer is
chosen. ident keyword in pg_hba.conf is still accepted and maps to
peer authentication.

– Misc minor fixes to 9.1 release notes. Thom Brown

Robert Haas pushed:

– Remove 13 keywords that are used only for ROLE options. Review by
Tom Lane.

– Minor sync rep documentation improvements: Make the name of the ID
tag for the GUC entry match the GUC name; Clarify that
synchronous_replication waits for xlog flush, not receipt; Mention
that synchronous_replication won’t wait if max_wal_senders=0.

– Corrections to CREATE FOREIGN TABLE documentation. Omit incorrect =
sign, and properly document server_name parameter. Shigeru Hanada.

– Tab completion for \pset format and \pset linestyle. Pavel Stehule

– Tab completion for \pset format and \pset linestyle. Pavel Stehule

– Fix various possible problems with synchronous replication. 1.
Don’t ignore query cancel interrupts. Instead, if the user asks to
cancel the query after we’ve already committed it, but before it’s
on the standby, just emit a warning and let the COMMIT finish. 2.
Don’t ignore die interrupts (pg_terminate_backend or fast shutdown).
Instead, emit a warning message and close the connection without
acknowledging the commit. Other backends will still see the effect
of the commit, but there’s no getting around that; it’s too late to
abort at this point, and ignoring die interrupts altogether doesn’t
seem like a good idea. 3. If synchronous_standby_names becomes
empty, wake up all backends waiting for synchronous replication to
complete. Without this, someone attempting to shut synchronous
replication off could easily wedge the entire system instead. 4.
Avoid depending on the assumption that if a walsender updates
MyProc->syncRepState, we’ll see the change even if we read it
without holding the lock. The window for this appears to be quite
narrow (and probably doesn’t exist at all on machines with strong
memory ordering) but protecting against it is practically free, so
do that. 5. Remove useless state SYNC_REP_MUST_DISCONNECT, which
isn’t needed and doesn’t actually do anything. There’s still some
further work needed here to make the behavior of fast shutdown
plausible, but that looks complex, so I’m leaving it for a separate
commit. Review by Fujii Masao.

– Add pause_at_recovery_target to recovery.conf.sample; improve docs.
Fujii Masao, but with the proposed behavior change reverted, and the
rest adjusted accordingly.

– Remove bogus comment.

– Protocol documentation for Hot Standby feedback messages.

– Minor fixes for high availability documentation. Erik Rijkers and

– Remove bogus semicolons in recoveryPausesHere. Without this, the
startup process goes into a tight loop, consuming 100% of one CPU
and failing to respond to interrupts.

– Remove ancient -X options to pg_dump, pg_dumpall, pg_restore. The
last version in which these options were documented is now EOL, so
it’s time to get rid of them for real. We now use GNU-style long
options instead.

– Make synchronous replication query cancel/die messages more
consistent. Per a gripe from Thom Brown about my previous commit in
this area, commit 9a56dc3389b9470031e9ef8e45c95a680982e01a.

– Woops. Previous patch to remove -X options missed getopt_long
calls(). Noted by Tom Lane.

– Move synchronous_standbys_defined updates from WAL writer to BG
writer. This is advantageous because the BG writer is alive until
much later in the shutdown sequence than WAL writer; we want to make
sure that it’s possible to shut off synchronous replication during a
smart shutdown, else it might not be possible to complete the
shutdown at all. Per very reasonable gripes from Fujii Masao and
Simon Riggs.

– Fix possible “tuple concurrently updated” error in ALTER TABLE.
When adding an inheritance parent to a table, an AccessShareLock on
the parent isn’t strong enough to prevent trouble, so take
ShareUpdateExclusiveLock instead. Since this is a behavior change,
albeit a fairly unobtrusive one, and since we have only one report
from the field, no back-patch. Report by Jon Nelson, analysis by
Alvaro Herrera, fix by me.

Andrew Dunstan pushed:

– Use correct PATH separator for Cygwin in pg_regress.c. This has
been broken for years, and I’m not sure why it has not been noticed
before, but now a very modern Cygwin breaks on it, and the fix is
clearly correct. Backpatching to all live branches.

Peter Eisentraut pushed:

– Raise maximum value of several timeout parameters The maximum value
of deadlock_timeout, max_standby_archive_delay,
max_standby_streaming_delay, log_min_duration_statement, and
log_autovacuum_min_duration was INT_MAX/1000 milliseconds, which is
about 35min, which is too short for some practical uses. Raise the
maximum value to INT_MAX; the code that uses the parameters already
supports that just fine.

Alvaro Herrera pushed:

– Fix PL/Python memory leak involving array slices. Report and patch
from Daniel Popowich, bug #5842 (with some debugging help from Alex

== Rejected Patches (for now) ==

No one was disappointed this week 🙂

== Pending Patches ==

Fujii Masao sent in another revision of the replication server timeout

Robert Haas sent in two revisions of a patch intended to fix some
infelicities in syncrep.

Roman Zotov sent in a patch to turn PREFERRED for type from a boolean
to an int2, which allows for an expression of precedence.

Thom Brown sent in a patch to allow users to set a default database
name other than postgres in initdb.

Piyush Newe sent in a patch intended to fix some infelicities in
century handling in to_date.

Heikki Linnakangas sent in another revision of the patch to enable
taking multiple base backups.

Radoslaw Smogura sent in two revisions of a patch to add a second
level buffer cache.

Kevin Grittner sent in two revisions of a patch intended to fix an
issue in SSI.

Nikhil Sontakke sent in two revisions of a patch to fix an issue with
a VACUUM FULL deadlock.

Jan Urbanski sent in another revision of the patch to add PL/PythonU

Comments are closed.