== PostgreSQL Weekly News – June 17 2012 ==

== PostgreSQL Weekly News – June 17 2012 ==

The first Commitfest of the 9.3 cycle has begun, and will run through
15 July 2012. Kevin Grittner is running this one.

The CfP for Postgres Open 2012 is open. Submissions are due by
11:59pm, June 26, 2012.

== PostgreSQL Product News ==

AnySQL Maestro 12.6, an ODBC-based management tool which works with
PostgreSQL, released.

pg_extractor 1.0.0, a customizing add-on to pg_dump, released.

== PostgreSQL Jobs for June ==


== PostgreSQL Local ==

PostgreSQL Session will be held on October 4th, 2012, in Paris,
France. More information at:

PostgreSQL Conference Europe 2012 will be in Prague, Czech Republic
on October 23-26. The call for papers is open.

PostgreSQL Day Argentina 2012 will be held on November 13th in Bernal,
Buenos Aires, at the National University of Quilmes. It will cover
topics for PostgreSQL users, developers and contributors, as well as
decision and policy makers. For more information about the
conference, please see the website at

== 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@fetter.org, German language
to pwn@pgug.de, Italian language to pwn@itpug.org. Spanish language
to pwn@arpug.com.ar.

== Reviews ==

== Applied Patches ==

Magnus Hagander pushed:

– Revert behaviour of -x/–xlog to 9.1 semantics. To replace it, add
-X/–xlog-method that allows the specification of fetch or stream.
Do this to avoid unnecessary backwards-incompatiblity. Spotted and
suggested by Peter Eisentraut.

– Prevent non-streaming replication connections from being selected
sync slave. This prevents a pg_basebackup backup session that just
does a base backup (no xlog involved at all) from becoming the
synchronous slave and thus blocking all access while it runs. Also
fixes the problem when a higher priority slave shows up it would
become the sync standby before it has reached the STREAMING state,
by making sure we can only switch to a walsender that’s actually
STREAMING. Fujii Masao

– Reorder basebackup options, to list pg_basebackup first. Since this
is the easy way of doing it, it should be listed first. All the old
information is retained for those who want the more advanced way.
Also adds a subheading for compressing logs, that seems to have been

Peter Eisentraut pushed:

– pg_receivexlog: Rename option –dir to –directory. getopt_long()
allows abbreviating long options, so we might as well give the
option the full name, and users can abbreviate it how they like. Do
some general polishing of the –help output at the same time.

– Improve documentation of postgres -C option. Clarify help
(s/return/print/), and explain that this option is for use by other
programs, not for user-facing use (it does not print units).

– Add more message pluralization. Even though we can’t do much about
the case with multiple plurals in one sentence, we can fix the other

– Improve reporting of permission errors for array types. Because
permissions are assigned to element types, not array types,
complaining about permission denied on an array type would be
misleading to users. So adjust the reporting to refer to the
element type instead. In order not to duplicate the required logic
in two dozen places, refactor the permission denied reporting for
types a bit. pointed out by Yeb Havinga during the review of the
type privilege feature

– Make documentation of –help and –version options more consistent.
Before, some places didn’t document the short options (-? and -V),
some documented both, some documented nothing, and they were listed
in various orders. Now this is hopefully more consistent and

Tom Lane pushed:

– Fix pg_dump output to a named tar-file archive. “pg_dump -Ft -f
filename …” got broken by my recent commit 4317e0246c645f60c39e6572644cff1cb03b4c65,
which I fear I only tested in the output-to-stdout variant. Report
and fix by Muhammad Asif Naeem.

– Ensure pg_ctl behaves sanely when data directory is not specified.
Commit aaa6e1def292cdacb6b27088898793b1b879fedf introduced multiple
hazards in the case where pg_ctl is executed with neither a -D
switch nor any PGDATA environment variable. It would dump core on
machines which are unforgiving about printf(“%s”, NULL), or failing
that possibly give a rather unhelpful complaint about being unable
to execute “postgres -C”, rather than the logically prior complaint
about not being told where the data directory is. Edmund Horner’s
report suggests that there is another, Windows-specific hazard here,
but I’m not the person to fix that; it would in any case only be
significant when trying to use a config-only PGDATA pointer.

– Minor code review for json.c. Improve commenting, conform to
project style for use of ++ etc. No functional changes.

– Support Linux’s oom_score_adj API as well as the older oom_adj API.
The simplest way to handle this is just to copy-and-paste the
relevant code block in fork_process.c, so that’s what I did. (It’s
possible that something more complicated would be useful to
packagers who want to work with either the old or the new API; but
at this point the number of such people is rapidly approaching zero,
so let’s just get the minimal thing done.) Update relevant
documentation as well.

– Deprecate use of GLOBAL and LOCAL in temp table creation. Aside
from adjusting the documentation to say that these are deprecated,
we now report a warning (not an error) for use of GLOBAL, since it
seems fairly likely that we might change that to request
SQL-spec-compliant temp table behavior in the foreseeable future.
Although our handling of LOCAL is equally nonstandard, there is no
evident interest in ever implementing SQL modules, and furthermore
some other products interpret LOCAL as behaving the same way we do.
So no expectation of change and no warning for LOCAL; but it still
seems a good idea to deprecate writing it. Noah Misch

– Fix description of SQL-standard meaning of CREATE LOCAL TEMP TABLE.
I had this slightly wrong, as noted by Noah Misch.

– Revert “Reduce checkpoints and WAL traffic on low activity database
server.” This reverts commit 18fb9d8d21a28caddb72c7ffbdd7b96d52ff9724.
Per discussion, it does not seem like a good idea to allow committed
changes to go un-checkpointed indefinitely, as could happen in a
low-traffic server; that makes us entirely reliant on the WAL stream
with no redundancy that might aid data recovery in case of disk
failure. This re-introduces the original problem of hot-standby
setups generating a small continuing stream of WAL traffic even when
idle, but there are other ways to address that without compromising
crash recovery, so we’ll revisit that issue in a future release

– Remove release note entry for reverted patch.

– Revisit error message details for JSON input parsing. Instead of
identifying error locations only by line number (which could be
entirely unhelpful with long input lines), provide a fragment of the
input text too, placing this info in a new CONTEXT entry. Make the
error detail messages conform more closely to style guidelines, fix
failure to expose some of them for translation, ensure compiler can
check formats against supplied parameters.

– Stamp HEAD as 9.3devel. Let the hacking begin …

– Stamp library minor versions for 9.3. This includes fixing the MSVC
copy of ecpg/preproc’s version info, which seems to have been
overlooked repeatedly. Can’t we fix that so there are not two

– Flesh out RELEASE_CHANGES instructions for branching in git. We
have this info in the wiki, but it should be here too.

– Add 9.2 branch to git_changelog’s list.

– Fix stats collector to recover nicely when system clock goes
backwards. Formerly, if the system clock went backwards, the stats
collector would fail to update the stats file any more until the
clock reading again exceeds whatever timestamp was last written into
the stats file. Such glitches in the clock’s behavior are not
terribly unlikely on machines not using NTP. Such a scenario has
been observed to cause regression test failures in the buildfarm,
and it could have bad effects on the behavior of autovacuum, so it
seems prudent to install some defenses. We could directly detect
the clock going backwards by adding GetCurrentTimestamp calls in the
stats collector’s main loop, but that would hurt performance on
platforms where GetCurrentTimestamp is expensive. To minimize the
performance hit in normal cases, adopt a more complicated scheme
wherein backends check for clock skew when reading the stats file,
and if they see it, signal the stats collector by sending an extra
stats inquiry message. The stats collector does an extra
GetCurrentTimestamp only when it receives an inquiry with an
apparently out-of-order timestamp. To avoid unnecessary
GetCurrentTimestamp calls, expand the inquiry messages to carry the
backend’s current clock reading as well as its stats cutoff time.
The latter, being intentionally slightly in-the-past, would trigger
more clock rechecks than we need if it were used for this purpose.
We might want to backpatch this change at some point, but let’s let
it shake out in the buildfarm for awhile first.

– Refer to the default foreign key match style as MATCH SIMPLE
internally. Previously we followed the SQL92 wording, “MATCH
<unspecified>”, but since SQL99 there’s been a less awkward way to
refer to the default style. In addition to the code changes,
pg_constraint.confmatchtype now stores this match style as ‘s’
(SIMPLE) rather than ‘u’ (UNSPECIFIED). This doesn’t affect pg_dump
or psql because they use pg_get_constraintdef() to reconstruct
foreign key definitions. But other client-side code might examine
that column directly, so this change will have to be marked as an
incompatibility in the 9.3 release notes.

Robert Haas pushed:

– Copy-editing of release notes. Remove a couple of items that were
actually back-patched bug fixes. Add additional details to a couple
of items which lacked a description. Improve attributions for a
couple of items I was involved with. A few other miscellaneous

– Mark JSON error detail messages for translation. Per gripe from Tom

– Make \conninfo print SSL information. Alastair Turner, per
suggestion from Bruce Momjian.

– Remove RELKIND_UNCATALOGED. This may have been important at some
point in the past, but it no longer does anything useful. Review by
Tom Lane.

– Remove misplaced sanity check from heap_create(). Even when
allow_system_table_mods is not set, we allow creation of any type of
SQL object in pg_catalog, except for relations. And you can get
relations into pg_catalog, too, by initially creating them in some
other schema and then moving them with ALTER .. SET SCHEMA. So this
restriction, which prevents relations (only) from being created in
pg_catalog directly, is fairly pointless. If we need a safety
mechanism for this, it should be placed further upstream, so that it
affects all SQL objects uniformly, and picks up both CREATE and SET
SCHEMA. For now, just rip it out, per discussion with Tom Lane.

– Add new function log_newpage_buffer. When I implemented the
ginbuildempty() function as part of implementing unlogged tables, I
falsified the note in the header comment for log_newpage. Although
we could fix that up by changing the comment, it seems cleaner to
add a new function which is specifically intended to handle this
case. So do that.

– During transaction cleanup, release locks before deleting files.
There’s no need to hold onto the locks until the files are needed,
and by doing it this way, we reduce the impact on other backends who
may be awaiting locks we hold. Noah Misch

– New SQL functions pg_backup_in_progress() and pg_backup_start_time().
Darold Gilles, reviewed by Gabriele Bartolini and others, rebased by
Marco Nenciarini. Stylistic cleanup and OID fixes by me.

– Doc corrections for pg_is_in_backup patch. Fujii Masao

– Improve readability and error messages in pg_backup_start_time.
Gurjeet Singh, with corrections by me.

Bruce Momjian pushed:

– In pg_upgrade, verify that the install user has the same oid on both
clusters, and make sure the new cluster has no additional users.
Backpatch to 9.1.

– In pg_upgrade, report pre-PG 8.1 plpython helper functions left in
the public schema that no longer point to valid shared object
libraries, and suggest a solution. Backpatch to 9.1 (already in

– Improve pg_upgrade wording for pg_ctl start failure; could be
connection failure. Backpatch to 9.2. Per report from Evan D.

– Update pgindent Perl indentation instructions based on feedback from
Àlvaro and Noah Misch. Backpatch to 9.2.

– In pgindent, suppress reading the perltidy RC file using

– Remove ‘for’ loop perltidy argument, and move args to perltidyrc
file. Backpatch to 9.2. Per suggestion from Noah Misch

== Rejected Patches (for now) ==

No one was disappointed this week

== Pending Patches ==

Noah Misch sent in a patch to restrict changing a function’s state of
CALLED ON NULL INPUT to the those roles which have permission to use
the language.

Jeff Davis sent in another revision of the patch to add 16-bit page

Jeff Davis sent in two more revisions of the patch to fix the way
fsync happens during initdb.

Amit Kapila sent in another revision of the patch to provide
fallback_application_name in places where it’s not yet provided.

Andres Freund sent in 16 patches implementing different parts of
Logical Replication/BDR.

Alexander Korotkov sent in a patch to implement quad-tree SP-GiST
indexing on ranges.

Marco Nenciarini sent in a patch to implement array_remove for 1-D
arrays and array_replace.

Shigeru HANADA sent in another revision of a patch to add a pgsql_fdw.

Robert Haas sent in a WIP patch implementing metapages for all

KaiGai Kohei sent in a patch implementing row-level access control.

Alvaro Herrera sent in another revision of the foreign key locks

Heikki Linnakangas sent in a flock of patches to change the WAL
format: one to use a 64-bit segment number, instead of the log/seg
combination; the second to include the xl_rem_len field, used for
continuation records, unconditionally in the xlog page header; the
third to allow WAL record header to be split across pages.

Robert Haas sent in another revision of the patch to allow measuring
spinning on lwlocks.

Peter Eisentraut sent in a patch implementing TRANSFORMs, namely
SQL-callable bits of code transforming PostgreSQL data structures to
and from ones in PLs.

Honza Horak sent in a patch to allow an instance to answer on more
than one unix socket.

Marko Kreen sent in two revisions of a patch to allow libpq to return
a row at a time rather than buffering the entire result set before
returning the first row.

Dimitri Fontaine sent in yet another patch implementing event

Alvaro Herrera sent in two revisions of a patch which splits htup.h in
two pieces, one public and one private.

Tom Lane sent in a patch to change the behavior of ON UPDATE SET
DEFAULT/SET NULL to set all columns, per the change to the SQL

Josh Kupershmidt sent in another revision of the patch to fix several
infelicities in tab completion for DROP FUNCTION in psql.

Comments are closed.