PostgreSQL Weekly News – February 28 2010

== PostgreSQL Weekly News – February 28 2010 ==

PostgreSQL 9.0alpha4 is out. Test! More info and download
information below.

Registration for PGCon 2010 is now open.

BWPUG will be meeting in Falls Church, VA, USA on March 10, 2010 at

The CfP for OSBridge is open!

== PostgreSQL Product News ==

The Karoo Project, an application development framework for distributed
PostgreSQL database applications, now has a widget set for web front

pgFouine 1.2, a PostgreSQL log analyzer written in PHP, released.

== PostgreSQL 9.0 Feature of the Week ==

The pgbench suite is now multi-threaded, allowing you to take
advantage of multiple CPU cores.

== PostgreSQL Jobs for February ==

== PostgreSQL Local ==

The German Speaking PostgreSQL User Group has a stand at the Project
Lounge in hall 2 at Cebit 2010 from March 02 to March 06, 2010 in
Hannover, Germany.

The German Language PostgreSQL User Group has a booth at Chemnitz Linuxdays
2010 on March 13 and 14, 2010 in Chemnitz, Germany. Andreas (ads)
Scherbaum will be giving a talk on PostgreSQL 9.0 and a workshop on
tuning PostgreSQL.

JDCon East will take place March 25-28, 2010 in Philadelphia, PA, USA.

Linuxfest Northwest 2010 will take place in Bellingham, Washington,
USA on April 24 and 25. Session, Booth and Sponsorship are available.

Andreas (ads) Scherbaum will be teaching a “PostgreSQL for Corporate
Use” course at the adult education center in Magdeburg, Germany May
3-7, 2010. Details below:

PgCon 2010 will be held May 20-21 2010 in Ottawa with tutorials before
on the 18th and 19th.

OSCON will take place in Portland, Oregon July 19-23, 2010.

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

== Applied Patches ==

Heikki Linnakangas committed:

– Move documentation of all recovery.conf option to a new chapter.
They used to be scattered between the “backup and restore” and
“streaming replication” chapters.

– Fix streaming replication starting at the very first WAL segment.
Per complaint from Greg Stark.

– In pgsql/doc/src/sgml/high-availability.sgml, small streaming
replication document improvements. Be more explicit that it’s

– In pgsql/doc/src/sgml/high-availability.sgml, fix typo. Fujii

– In pgsql/doc/src/sgml/recovery-config.sgml, clarify that the
connection string for primary_conninfo is in the same format as in
PQconnectdb(). As pointed out by Thom Brown.

– Document max_standby_delay=-1 option, now that it’s allowed again.

Tom Lane committed:

– In pgsql/src/backend/storage/file/fd.c, adjust pg_fsync_writethrough
so that it will set errno when failing on a platform that doesn’t
support this operation. The former coding would allow an unrelated
errno to be reported, which would be quite misleading. Not sure if
this has anything to do with the current buildfarm failures, but
it’s certainly bogus as-is.

– In pgsql/src/port/copydir.c, let’s try forcing errno to zero before
issuing fsync. The current buildfarm results claiming EBADF seem
improbable enough that I’m not convinced fsync is really returning
that — could it be failing to set errno at all?

– In pgsql/src/port/copydir.c, some platforms reject fsync() on files
opened O_RDONLY.

– In pgsql/src/bin/pg_dump/pg_backup_tar.c, minor style policing for
error messages in pg_dump tar code. Notably, change “dumping data
out of order is not supported” to “restoring data out of order is
not supported”, because you get that error during pg_restore not
pg_dump. Also fix some comments that didn’t look so good after
being pgindented as perhaps they did originally.

– In pgsql/doc/src/sgml/ref/pg_dump.sgml, clarify statements about tar
archive format.

– Fix configure’s regexp for extracting the Perl version number from
perl -v output. Per bug #5339, Perl 5.11 has changed the format of
that output enough to break the previous coding. Alex Hunsaker

– Add an OR REPLACE option to CREATE LANGUAGE. This operates in the
same way as other CREATE OR REPLACE commands, ie, it replaces
everything but the ownership and ACL lists of an existing entry, and
requires the caller to have owner privileges for that entry. While
modifying an existing language has some use in development
scenarios, in typical usage all the “replaced” values come from
pg_pltemplate so there will be no actual change in the language
definition. The reason for adding this is mainly to allow programs
to ensure that a language exists without triggering an error if it
already does exist. This commit just adds and documents the new
option. A followon patch will use it to clean up some unpleasant
cases in pg_dump and pg_regress.

– In pgsql/src/test/regress/pg_regress.c, make pg_regress use CREATE
OR REPLACE LANGUAGE, so that –load-language will work whether or
not the specified language is preinstalled. This responds to some
complaints about having to change test scripts because plpgsql is
preinstalled as of 9.0.

– In pgsql/src/bin/pg_dump/pg_dump.c, use CREATE OR REPLACE LANGUAGE
in pg_dump to avoid the need for a couple of significantly uglier
kluges that were working around the change in plpgsql’s preinstalled

– In pgsql/src/bin/pg_dump/pg_dump.c, un-break pg_dump for the case of
zero-column tables. This was evidently broken by the CREATE TABLE
OF TYPE patch. It would have been noticed if anyone had bothered to
try dumping and restoring the regression database …

– Fix patch for printing backend and pg_dump versions so that it works
in a desirable fashion in archive-dump cases, ie you should get the
pg_dump version not the pg_restore version.

– Allow zero-dimensional (ie, empty) arrays in contrib/ltree
operations. The main motivation for changing this is bug #4921, in
which it’s pointed out that it’s no longer safe to apply ltree
operations to the result of ARRAY(SELECT …) if the sub-select
might return no rows. Before 8.3, the ARRAY() construct would
return NULL, which might or might not be helpful but at least it
wouldn’t result in an error. Now it returns an empty array which
results in a failure for no good reason, since the ltree operations
are all perfectly capable of dealing with zero-element arrays. As
far as I can find, these ltree functions are the only places where
zero array dimensionality is rejected unnecessarily. Back-patch to
8.3 to prevent behavioral regression of queries that worked in older

– In pgsql/src/backend/access/transam/xlog.c, make pg_stop_backup’s
reporting a bit more verbose in hopes of making error cases less
intimidating for novices. Per discussion. Greg Smith.

– In pgsql/doc/src/sgml/plperl.sgml, improve warning about creating
nested named subroutines in plperl. Per discussion.

– In pgsql/src/backend/optimizer/util/predtest.c, allow
predicate_refuted_by() to deduce that NOT A refutes A. We had
originally made the stronger assumption that NOT A refutes any B if
B implies A, but this fails in three-valued logic, because we need
to prove B is false not just that it’s not true. However the logic
does go through if B is equal to A. Recognizing this limited case
is enough to handle examples that arise when we have simplified
“bool_var = true” or “bool_var = false” to just “bool_var” or “NOT
bool_var”. If we had not done that simplification then the
btree-operator proof logic would have been able to prove that the
expressions were contradictory, but only for identical expressions
being compared to the constants; so handling identical A and B
covers all the same cases. The motivation for doing this is to
avoid unexpected asymmetrical behavior when a partitioned table uses
a boolean partitioning column, as in today’s gripe from Dominik
Sander. Back-patch to 8.2, which is as far back as
predicate_refuted_by attempts to do anything at all with NOTs.

– Back-patch addition of ssl_renegotiation_limit into 7.4 through 8.1.

– In pgsql/src/backend/utils/mb/mbutils.c, undo some more pgindent
breakage. Per buildfarm.

– Entity-ify a few new uses of literal <, >, and &.

– Insert a hack into get_float8_nan (both core and ecpg copies) to
deal with the fact that NetBSD/mips is currently broken, as per
buildfarm member pika. Also add regression tests to ensure that
get_float8_nan and get_float4_nan are exercised even on platforms
where they are not needed by float8in/float4in. Zoltan Boszormenyi
and Tom Lane.

– Assorted code cleanup for contrib/xml2. No change in functionality,
just make it a bit less ugly in places.

– Fix up memory management problems in contrib/xml2. Get rid of the
code that attempted to funnel libxml2’s memory allocations into
palloc. We already knew from experience with the core xml datatype
that trying to do this is simply not reliable. Unlike the core
code, I did not bother adding a lot of PG_TRY/PG_CATCH logic to try
to ensure that everything is cleaned up on error exit. Hence, we
might leak some memory if one of these functions fails partway
through. Given the deprecated status of this contrib module and the
fact that errors partway through the functions shouldn’t be too
common, it doesn’t seem worth worrying about. Also fix a separate
bug in xpath_table, that it did the wrong things if given a result
tuple descriptor with less than 2 columns. While such a case isn’t
very useful in practice, we shouldn’t fail or stomp memory when it
occurs. Add some simple regression tests based on all the reported
crash cases that I have on hand. This should be back-patched, but
let’s see if the buildfarm likes it first.

– Back-patch changes of 2009-05-13 in xml.c’s memory management to
8.3. I was afraid to do this when these changes were first made,
but now that 8.4 has seen some field use it should be all right to
back-patch. These changes are really quite necessary in order to
give xml.c any hope of co-existing with loadable modules that also
wish to use libxml2.

Bruce Momjian committed:

– In pgsql/doc/src/sgml/backup.sgml, briefly document in two places
that pg_dump and pg_dumpall cannot be used for continuous archiving.

– Use the term “bundled distribution” instead of “official
distribution” in configure warnings.

– In pgsql/doc/src/sgml/protocol.sgml, remove protocol documentation
paragraph about environment variable passing being “covered
elsewhere”, per Dave Page.

– Revert configure warning to use “official distribution”.

– Document that pg_ctl cares about the PGHOST environment variable.

– In pgsql/doc/src/sgml/ref/create_table.sgml, remove
long-commented-out paragraph in documentation about function
inheritance in create table, per Andrew Dunstan.

– In pgsql/doc/src/sgml/ref/pg_restore.sgml, update pg_restore
documentation to show new pg_restore custom listing format. Pavel

– Supress convertion of zero hours to ’12’ for intervals when using
to_char with Hitoshi Harada, e.g. to_char(interval ‘0d 0h 12m 44s’,
‘DD HH24 MI SS’); now returns: ’00 00 12 44′ not: ’00 12 12 44′.

– In pgsql/doc/src/sgml/ref/copy.sgml, make documentation more direct
about the handling of COPY files based on the client encoding.

– In pgsql/src/backend/utils/adt/formatting.c, secondary patch to fix
interval to_char() for “HH” where hours >= 12.

– Revert recent change of to_char(‘HH12′) handling for intervals;
instead improve documentation, and add C comment.

– In pgsql/doc/src/sgml/ref/copy.sgml, revert recent COPY manual
change about encoding; add mention of “server”.

– In pgsql/src/bin/pg_dump/pg_backup_archiver.c, have pg_dump (-v)
verbose mode output the pg_dump and server versions in text output
mode, like we do in custom output mode. Jim Cox

– Update startup scripts for Linux and FreeBSD. Kevin Grittner.

– In pgsql/contrib/start-scripts/freebsd, modify freebsd start script
to just exit 0 with message.

– Remove pre-7.4 documentaiton mentions, now that 8.0 is the oldest
supported release.

– Revert removal of pre-7.4 documenation behavior mentions.

– In pgsql/doc/src/sgml/ref/pg_restore.sgml, document that pg_restore
-t can use -n for its schema qualification.

– In pgsql/doc/src/sgml/datatype.sgml, clearly document that timestamp
alone means timestamp without timezone, per SQL standard, and
mention 7.3 behavior at the end.

– In pgsql/src/backend/utils/adt/formatting.c, add C comment that
do_to_timestamp() lacks error checking.

– In pgsql/doc/src/sgml/config.sgml, document clearly the meaning of
none/all for log_statements.

– In pgsql/doc/src/sgml/ref/create_function.sgml, document that after
triggers that need to see changed rows should not be marked stable.

– In pgsql/doc/src/sgml/datatype.sgml, remove ’emphasis’ markup inside
literal; not allowed.

– In pgsql/src/tools/pgindent/README, update pgindent instructions to
avoid changes to flex output files.

– In pgsql/src/tools/pgindent/, add pgindent typedefs file
to CVS.

– pgindent run for 9.0.

– In pgsql/src/tools/pgindent/README, update pgindent instructions.

– In pgsql/doc/src/sgml/perform.sgml, document pg_restore –jobs as a
performance enhancement.

– Call output file typedefs.list; update README.

– In pgsql/src/bin/scripts/vacuumdb.c in vacuumdb –help, call analyze
“statistics”, not “hints”.

– In pgsql/src/tools/pgindent/README, document why pgindent wants a
fresh CVS checkout.

– In pgsql/src/tools/pgindent/README, update pgindent docs to use

– In pgsql/src/tools/pgindent/README, wording improvements to README.

– Revert pgindent changes to ecpg include files that are part of ecpg
regession test output, and update pgindent script to avoid them in
the future.

– In pgsql/src/tools/pgindent/README, suggest gmake installcheck-world
for pgindent testing.

– In pgsql/doc/src/sgml/wal.sgml, document ATAPI drive flush command,
and mention SSD drives.

– In pgsql/doc/src/sgml/libpq.sgml, use <> for libpq #include in
example programs, per suggestion from Josh Berkus.

– In pgsql/doc/src/sgml/config.sgml, document
trace_recovery_messages() parameter as an enum, not string. Fujii


– In pgsql/src/backend/utils/adt/pg_locale.c, back out unintended
change to pg_locale.c.

– Update complex locale example in the documentation.

ITAGAKI Takahiro committed:

– In pgsql/contrib/dblink/dblink.c, remove useless codes to initialize
TupleDesc from dblink_exec.

Alvaro Herrera committed:

– In pgsql/doc/src/sgml/mvcc.sgml, remove stray semicolon, per report
from Sandro (strk) Santilli strk AT keybit DOT net.

Magnus Hagander committed:

– In pgsql/doc/src/sgml/plperl.sgml, fix typos, per Richard Huxton

– Add configuration parameter ssl_renegotiation_limit to control how
often we do SSL session key renegotiation. Can be set to 0 to
disable renegotiation completely, which is required if a broken SSL
library is used (broken patches to CVE-2009-3555 a known cause) or
when using a client library that can’t do renegotiation. Back-patch
to 8.2.

Michael Meskes committed:

– Make sure ecpg uses the same header files in the same order as the

Gregory Stark committed:

– In pgsql/src/port/copydir.c, second try at fsyncing directories in
CREATE DATABASE. Let’s see what the build farm says of opening
directories read-only and ignoring EBADF from fsync of directories.

– In pgsql/src/port/copydir.c, Add EPERM to the list of return codes
to expect from opening directories based on Vista results

== Rejected Patches (for now) ==

No one was disappointed this week 🙂

== Pending Patches ==

Magnus Hagander sent in a patch to fix the SSL negotiation issue.

Fujii Masao sent in a doc patch for Hot Standby.

Simon Riggs sent in a patch to add a pg_abort_backup() function per
discussion about Hot Standby/Streaming Replication.

Gabrielle Roth sent in a doc patch explaining which statements get
logged at different levels of log_level in postgresql.conf.

Fujii Masao sent in a patch for streaming replication to use
lastPageTLI instead of curFileTLI as the timeline of the last applied

Teodor Sigaev sent in a patch against tsearch2 which allows for

ITAGAKI Takahiro sent in a cleanup for the sequential scan code.

Piyush Newe sent in a patch to change the error message thrown in
ambiguous cases of the argument.function notation.

Hiroshi Inoue and Bruce Momjian sent in patches to get to_char to do
the right thing on Windows with UTF-8 encoding.

Comments are closed.