PostgreSQL Weekly News – September 11 2011
== PostgreSQL Weekly News – September 11 2011 ==
The Call for Papers for is open for FLOSS UK, which will be held in
Edinburgh from the 20th to the 22nd March 2012. The deadline for
proposals is the 18th November 2011 and selected speakers will be
notified by the 25th November 2011. Proposals should be submitted to
postgresql2012 AT flossuk DOT org. More information at:
New Survey: When do you plan to upgrade to 9.1?
NYCPUG presents “PostgreSQL 9.1 Overview” with Bruce Momjian at
6:30pm September 22, 2011 at Yodle. RSVP and details below.
== PostgreSQL Product News ==
pgpool-II 3.1.0, a connection pooler and more, released.
xlogdump 0.4.0, a tool for extracting data from WAL segment files, released.
== PostgreSQL Jobs for September ==
== PostgreSQL Local ==
Postgres Open 2011, a conference focused on disruption of the database
industry through PostgreSQL, will take place September 14-16, 2011 in
Chicago, Illinois at the Westin Michigan Avenue hotel.
PostgreSQL Conference West (#PgWest) will be held September 27th-30th,
2011 at the San Jose Convention center in San Jose, California, USA.
PostgreSQL Conference Europe 2011 will be held on October 18-21 in
PG-Day Denver 2011 will be held on Friday, October 21st, 2011 at
the Auraria Campus near downtown Denver, Colorado.
pgbr will be in Sao Paulo, Brazil November 3-4, 2011.
PGConf.DE 2011 is the German-speaking PostgreSQL Conference and will
take place on November 11th in the Rheinisches Industriemuseum in
Oberhausen, Germany. Call for Papers is open.
The fifth edition of the Italian PostgreSQL Day (PGDay.IT 2011) will
be held on November 25, 2011 in Prato, Italy.
== 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 firstname.lastname@example.org, German language
to email@example.com, Italian language to firstname.lastname@example.org. Spanish language
== Reviews ==
== Applied Patches ==
Bruce Momjian pushed:
– Document that contrib/pgtrgm only processes ASCII alphanumeric
characters. Backpatch to 9.0 and 9.1.
– Add mention that UTC really means UT1. Backpatch to 9.1.
– Add C comment about why we send cache invalidation messages for
– Add documentation link to strftime supported options.
– Properly document semphore requirements by accounting for worker
processes. Backpatch to 9.1 and 9.0. Submitted by Anton
Yuzhaninov, confirmed by Robert Haas
– Document PERFORM limitation when using WITH queries. Backpatch to
9.0 and 9.1. Report from Dmitry Epstein.
– Fix plpgsql “PERFORM” markup. Backpatch to 9.0 and 9.1.
– Add documentation suggestion about adding a comment to the top of
pgpass. Backpatch to 9.1.
– Fix spelling mistake in pgpass documentation change. Per Peter
– Properly document the existance of OLD/NEW trigger pl/pgsql trigger
fields. Backpatch to 9.0 and 9.1. Report from Pavel Stehule, patch
from Josh Kupershmidt
– Revert documentation patch about NEW/OLD and triggers. Backpatch to
9.0 and 9.1. Patch from Josh Kupershmidt.
– Fix to_date() and to_timestamp() to handle year masks of length < 4
so they wrap toward year 2020, rather than the inconsistent behavior
we had before.
– Fix bug introduced by pgrminclude where the tablespace version name
was not expanded. Bump catalog version number to force initdb for
– Have pgrminclude skip files that use CppAsString2 because
CppAsString2 will expaned undefined identifiers.
– In pg_upgrade, disallow migration of 8.3 clusters using
contrib/ltree because its internal format was changed in 8.4.
Backpatch to 9.0 and 9.1. Report by depesz, diagnosis by Tom.
– Allow bcc32 and win32 batch files to compile libpq. Backpatch to
9.1. By Hiroshi Saito
– Remove unnecessary MATCH FULL specification in example. Reported by
– Document that only user-defined columns are expanded by SELECT *.
– Remove double-quoting of table names in clusterdb. BACKWARD
COMPABILITY BREAKAGE. Remove double-quoting of index/table names in
reindexdb. BACKWARD COMPABILITY BREAKAGE. Document thate
user/database names are preserved with double-quoting by
command-line tools like vacuumdb.
Tom Lane pushed:
– Update time zone data files to tzdata release 2011i. DST law
changes in Canada, Egypt, Russia, Samoa, South Sudan.
– Update type-conversion documentation for long-ago changes. This
example wasn’t updated when we changed the behavior of bpcharlen()
in 8.0, nor when we changed the number of parameters taken by the
bpchar() cast function in 7.3. Per report from lsliang.
– Add an “incompatibility” entry to 9.1 release notes about CREATE
EXTENSION. We’ve now seen more than one gripe from somebody who
didn’t get the memo about how to install contrib modules in 9.1.
Try to make it a little more prominent that you aren’t supposed to
call the scripts directly anymore.
– Avoid possibly accessing off the end of memory in
examine_attribute(). Since the last couple of columns of pg_type
are often NULL, sizeof(FormData_pg_type) can be an overestimate of
the actual size of the tuple data part. Therefore memcpy’ing that
much out of the catalog cache, as analyze.c was doing, poses a small
risk of copying past the end of memory and incurring SIGSEGV. No
such crash has been identified in the field, but we’ve certainly
seen the equivalent happen in other code paths, so patch this one
all the way back. Per valgrind testing by Noah Misch, though this
is not his proposed patch. I chose to use SearchSysCacheCopy1
rather than inventing special-purpose infrastructure for copying
only the minimal part of a pg_type tuple.
– Avoid possibly accessing off the end of memory in SJIS2004
conversion. The code in shift_jis_20042euc_jis_2004() would fetch
two bytes even when only one remained in the string. Since
conversion functions aren’t supposed to assume null-terminated
input, this poses a small risk of fetching past the end of memory
and incurring SIGSEGV. No such crash has been identified in the
field, but we’ve certainly seen the equivalent happen in other code
paths, so patch this one all the way back. Report and patch by Noah
– Improve comment about handling of temp tables in shared-inval code.
– Fix get_name_for_var_field() to deal with RECORD Params. With 9.1’s
use of Params to pass down values from NestLoop join nodes to their
inner plans, it is possible for a Param to have type RECORD, in
which case the set of fields comprising the value isn’t determinable
by inspection of the Param alone. However, just as with a Var of
type RECORD, we can find out what we need to know if we can locate
the expression that the Param represents. We already knew how to do
this in get_parameter(), but I’d overlooked the need to be able to
cope in get_name_for_var_field(), which led to EXPLAIN failing with
“record type has not been registered”. To fix, refactor the search
code in get_parameter() so it can be used by both functions. Per
report from Marti Raudsepp.
– Fix typo in error message. Per Euler Taveira de Oliveira.
– Fix corner case bug in numeric to_char(). Trailing-zero stripping
applied by the Fujii Masao specifier could strip zeroes to the left
of the decimal point, for a format with no digit positions after the
decimal point (such as “FM999.”). Reported and diagnosed by Marti
Raudsepp, though I didn’t use his patch.
– One last round of copy-editing for the 9.1 release notes. Also set
the documented release date to 2011-09-12.
– round() is not portable. Use rint().
– Stamp 9.1.0.
– Move Timestamp/Interval typedefs and basic macros into
datatype/timestamp.h. As per my recent proposal, this refactors
things so that these typedefs and macros are available in a header
that can be included in frontend-ish code. I also changed various
headers that were undesirably including utils/timestamp.h to include
datatype/timestamp.h instead. Unsurprisingly, this showed that half
the system was getting utils/timestamp.h by way of xlog.h. No
actual code changes here, just header refactoring.
– Simplify handling of the timezone GUC by making initdb choose the
default. We were doing some amazingly complicated things in order
to avoid running the very expensive identify_system_timezone()
procedure during GUC initialization. But there is an obvious fix
for that, which is to do it once during initdb and have initdb
install the system-specific default into postgresql.conf, as it
already does for most other GUC variables that need
system-environment-dependent defaults. This means that the timezone
(and log_timezone) settings no longer have any magic behavior in the
server. Per discussion.
– Try to un-break MSVC build. I thought we had enough infrastructure
to absorb CPPFLAGS changes from the makefiles, but buildfarm says
– Fix permissions on pg_largeobject_metadata.h in 9.0 branch. For
some reason it was 0755 instead of 0644.
– Remove no-longer-used variable.
– Invent a new memory context primitive, MemoryContextSetParent. This
function will be useful for altering the lifespan of a context after
creation (for example, by creating it under a transient context and
later reparenting it to belong to a long-lived context). It costs
almost no new code, since we can refactor what was there. Per my
proposal of yesterday.
Peter Eisentraut pushed:
– Improve “invalid byte sequence for encoding” message. It used to
ERROR: invalid byte sequence for encoding “UTF8”: 0xdb24
Change this to
ERROR: invalid byte sequence for encoding “UTF8”: 0xdb 0x24
to make it clear that this is a byte sequence and not a code point.
Also fix the adjacent “character has no equivalent” message that has
the same issue.
– Correct ancient logic mistake in assertion. Found by gcc
– Add missing format argument to ecpg_log() call
– Add missing format attributes. Add __attribute__ decorations for
printf format checking to the places that were missing them. Fix
the resulting warnings. Add -Wmissing-format-attribute to the
standard set of warnings for GCC, so these don’t happen again. The
warning fixes here are relatively harmless. The one serious problem
discovered by this was already committed earlier in
– Fix additional format warning. Apparently, this only happens on
– Remove many -Wcast-qual warnings. This addresses only those cases
that are easy to fix by adding or moving a const qualifier or
removing an unnecessary cast. There are many more complicated cases
Alvaro Herrera pushed:
– Mark some untranslatable messages with errmsg_internal.
– Adjust translator comment format to xgettext expectations
– Tweak string for uniformity
Simon Riggs pushed:
– Emit cascaded standby message on shutdown only when appropriate.
Adds additional test for active walsenders and closes a race
condition for when we failover when a new walsender was connecting.
Reported and fixed bu Fujii Masao. Review by Heikki Linnakangas
– Partially revoke attempt to improve performance with many
savepoints. Maintain difference between subtransaction release and
commit introduced by earlier patch.
– PublishStartupProcessInformation() to avoid rare hang in recovery.
Bgwriter could cause hang in recovery during page concurrent
cleaning. Bug report and testing by Bernd Helmle, fix by me
Heikki Linnakangas pushed:
– Buffering GiST index build algorithm. When building a GiST index
that doesn’t fit in cache, buffers are attached to some internal
nodes in the index. This speeds up the build by avoiding random I/O
that would otherwise be needed to traverse all the way down the tree
to the find right leaf page for tuple. Alexander Korotkov
– Fix typo and reword the sentence.
ITAGAKI Takahiro pushed:
– Add datatype directory to SUBDIRS. New header datatype/timestamp.h
should be installed for server-side dev.
== Rejected Patches (for now) ==
No one was disappointed this week 🙂
== Pending Patches ==
Heikki Linnakangas and Alexander Korotkov traded new versions of the
patch to build GiST indexes quickly.
Oleg Bartunov sent in three more revisions of the patch to implement
space-partitioned GiST indexes.
Marti Raudsepp sent in another revision of the patch to generate more
useful column names for subquery expressions.
Marti Raudsepp sent in a patch which adds the backend’s current
running query to the “backend crash” message.
Shigeru HANADA sent in two more revisions of a patch to add a “force
not null” option to the file FDW.
Pavan Deolasee sent in another revision of the patch to a single-pass
Fujii Masao sent in two revisions of a patch to add a
Marko (johto) Tiikkaja sent in a patch to add an nfiltered annotation
George Barnett sent in a patch intended to improve the way PostgreSQL
runs with NFS data directory on Linux.
Tom Lane sent in a WIP patch to bring ECPG in line with the rest of
the code, which as of this week has a separate header for the core
timestamp definitions and macros.
Fujii Masao sent in a patch to unite recovery.conf with postgres.conf.
Fujii Masao sent in two revisions of a patch to add a replication
option to the createuser utility.
Alexey Klyukin sent in another revision of the patch to allow the pg
config parser to continue on error.
Marti Raudsepp sent in a patch to cache constant stable expressions
Josh Kupershmidt sent in another revision of the patch to allow \dd to
show constraint names.
Jun Ishiduka sent in another revision of the patch to make it possible
to take an on-line base backup from a hot standby.
Andrew Dunstan sent in a patch intended to fix the issue where the
databse super-user is presumed to be a member of every role.
Alexander Korotkov sent in another revision of the patch implementing
a double-sorting picksplit implementation for GiST indexes.
KaiGai Kohei sent in another flock of patches reworking DROP into a
single unified framework.
Comments are closed.