== PostgreSQL Weekly News - November 13 2011 ==
The fifth annual "Prague PostgreSQL Developers Day" conference,
organized by CSPUG (Czech and Slovak PostgreSQL Users Group), will be
held on February 9, 2012 in Prague. The Call for Papers is open.
Please send proposals including contact information, topic, and
expected length of session to info AT p2d2 DOT cz.
== PostgreSQL Product News ==
PostgreSQL 9.1 RPMs for Fedora 16 released.
Postgres PlusÃ‚Â® Connector for Hadoop released by EnterpriseDB.
== PostgreSQL Jobs for November ==
== PostgreSQL Local ==
The fifth edition of the Italian PostgreSQL Day (PGDay.IT 2011) will
be held on November 25, 2011 in Prato, Italy.
The Call for Papers is open for PostgreSQL Session #3, which will be
held in Paris, Feb 2nd, 2012. The deadline for proposals is the 30th
November 2011 and selected speakers will be notified by the 14th
December 2011. Proposals (in French or English) should be submitted
to call-for-paper AT postgresql-sessions DOT org.
More information at: http://www.postgresql-sessions.org/en/3/
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:
== 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 ==
Tom Lane pushed:
- On second thought, we'd better just drop these tests altogether.
Further experimentation reveals that my previous change didn't fix
the issue entirely: these tests would still fail at the
spring-forward DST transition. There doesn't seem to be any great
value in testing this specific issue for both timestamp and
timestamptz, so just lose the latter tests.
- Fix assorted bugs in contrib/unaccent's configuration file parsing.
Make it use t_isspace() to identify whitespace, rather than relying
on sscanf which is known to get it wrong on some platform/locale
combinations. Get rid of fixed-size buffers. Make it actually
continue to parse the file after ignoring a line with untranslatable
characters, as was obviously intended. The first of these issues is
per gripe from J Smith, though not exactly either of his proposed
- Wrap appendrel member outputs in PlaceHolderVars in additional
cases. Add PlaceHolderVar wrappers as needed to make UNION ALL
sub-select output expressions appear non-constant and distinct from
each other. This makes the world safe for
add_child_rel_equivalences to do what it does. Before, it was
possible for that function to add identical expressions to different
EquivalenceClasses, which logically should imply merging such ECs,
which would be wrong; or to improperly add a constant to an
EquivalenceClass, drastically changing its behavior. Per report
from Teodor Sigaev. The only currently known consequence of this
bug is "MergeAppend child's targetlist doesn't match MergeAppend"
planner failures in 9.1 and later. I am suspicious that there may
be other failure modes that could affect older release branches; but
in the absence of any hard evidence, I'll refrain from back-patching
further than 9.1.
- Fix random discrepancies between parallel_schedule and
serial_schedule. In particular, my previous patch expected the
create_index test to run before the inherit test; but this was only
true in the serial schedule. Rearrange this portion of the
schedules to be more consistent. Per buildfarm results.
- Tweak new regression test case for more portability. Ensure that
same index gets selected on 32-bit and 64-bit machines. Per
- Avoid platform-dependent infinite loop in pg_dump. If malloc(0)
returns NULL, the binary search in findSecLabels() will probably go
into an infinite loop when there are no security labels, because
NULL-1 is greater than NULL after wraparound. (We've seen this
pathology before ... I wonder whether there's a way to detect the
class of bugs automatically?) Diagnosis and patch by Steve Singer,
cosmetic adjustments by me
- Throw nice error if server is too old to support psql's \ef or \sf
command. Previously, you'd get "function pg_catalog.pg_get_functiondef(integer)
does not exist", which is at best rather unprofessional-looking.
Back-patch to 8.4 where \ef was introduced. Josh Kupershmidt
- In plpgsql, allow foreign tables to define row types. This seems to
have been just an oversight in previous foreign-table work. A quick
grep didn't turn up any other places where RELKIND_FOREIGN_TABLE was
obviously omitted. One change noted by Alexander Soudakov, the
other by me. Back-patch to 9.1.
Heikki Linnakangas pushed:
- Fix timestamp range subdiff functions, when using float datetimes.
- Adjust range type docs for some last-minute changes I made to the
patch. non_empty(anyrange) function was removed, empty(anyrange)
was renamed to isempty(anyrange), and !? operators were removed.
- Make DatumGetInetP() unpack inet datums with a 1-byte header, and
add a new macro, DatumGetInetPP(), that does not. This brings these
macros in line with other DatumGet*P() macros. Backpatch to 8.3,
where 1-byte header varlenas were introduced.
- In COPY, insert tuples to the heap in batches. This greatly reduces
the WAL volume, especially when the table is narrow. The overhead
of locking the heap page is also reduced. Reduced WAL traffic also
makes it scale a lot better, if you run multiple COPY processes at
the same time.
- Fix bugs in the COPY heap-insert batching patch. Forgot to call
RestoreBkpBlocks() in the redo-function, as pointed out by Simon
Riggs. In redo of a regular heap insert, it's taken care of in
heap_redo(), but this new record type uses the heap2 RM, and
heap2_redo() does not take care of that for you. Also, failed to
reset the vmbuffer and all_visibile_cleared local variables after
switching to a new buffer.
- Fix another bug in the redo of COPY batches. I got alignment wrong
in the redo routine. Spotted by redoing the log generated by copy
Robert Haas pushed:
- Minor grammar improvements.
- Make VACUUM avoid waiting for a cleanup lock, where possible. In a
regular VACUUM, it's OK to skip pages for which a cleanup lock isn't
immediately available; the next VACUUM will deal with them. If
we're scanning the entire relation to advance relfrozenxid, we might
need to wait, but only if there are tuples on the page that actually
require freezing. These changes should greatly reduce the incidence
of of vacuum processes getting "stuck". Simon Riggs and Robert Haas
- Remove hstore's text => text operator. Since PostgreSQL 9.0, we've
emitted a warning message when an operator named => is created,
because the SQL standard now reserves that token for another use.
But we've also shipped such an operator with hstore. Use of the
function hstore(text, text) has been recommended in preference to
=>(text, text). Per discussion, it's now time to take the next step
and stop shipping the operator. This will allow us to prohibit the
use of => as an operator name in a future release if and when we
wish to support the SQL standard use of this token. The release
notes should mention this incompatibility. Patch by me, reviewed by
David Wheeler, Dimitri Fontaine and Tom Lane.
- Rewrite comment for slightly greater accuracy. Per an observation
from Thom Brown that the old version contained a typo.
- Fix hstore regression tests. This was an oversight in commit
b60653bc0b75b7f3b5dda0a2968a22129aafb2b2. Also, fix a typo spotted
by Thom Brown.
- Fix compiler warning.
- Revert removal of trace_userlocks, because userlocks aren't gone.
This reverts commit 0180bd6180511875db046bf8ddcaa633a2952dfd.
contrib/userlock is gone, but user-level locking still exists, and
is exposed via the pg_advisory* family of functions.
- Correct documentation for trace_userlocks.
- Fix psql's \dd version check for operator families. Report and
patch by Josh Kupershmidt; comment revisions by me.
- Avoid retaining multiple relation locks in RangeVarGetRelid. If it
turns out we've locked the wrong OID, release the old lock. In most
cases, it's pretty harmless to retain the extra lock, but this seems
tidier and avoids using lock table slots unnecessarily. Per
discussion with Tom Lane.
Peter Eisentraut pushed:
- -DLINUX_OOM_ADJ=0 should be in CPPFLAGS, not CFLAGS
- Clean gettext-files file in clean target. It used to be cleaned in
maintainer-clean, but that is inconsistent with other cleaning of
NLS files in nls-global.mk, and it's also wrong overall, because
it's not part of the distribution tarball, which is the base
definition of the maintainer-clean target.
- Only install the extension files for the current Python major
- Fix server header file installation with vpath builds. Several
server header files would not be installed in vpath builds because
they live in the build directory.
- Add psql expanded auto mode. This adds the "auto" option to the \x
command, which switches to the expanded mode when the normal output
would be wider than the screen. reviewed by Noah Misch
Bruce Momjian pushed:
- Document that PQexec() can handle a NULL res pointer just fine.
Backpatch to 9.1. Mark Hills
Simon Riggs pushed:
- Wakeup WALWriter as needed for asynchronous commit performance.
Previously we waited for wal_writer_delay before flushing WAL. Now
we also wake WALWriter as soon as a WAL buffer page has filled.
Significant effect observed on performance of asynchronous commits
by Robert Haas, attributed to the ability to set hint bits on tuples
earlier and so reducing contention caused by clog lookups.
Michael Meskes pushed:
- Applied patch by Zoltan to fix copy&paste bug in ecpg's sqlda
== Rejected Patches (for now) ==
No one was disappointed this week :-)
== Pending Patches ==
Peter Eisentraut sent in the first of several patches to quiet
warnings generated when using -Wcast-qual.
Thomas Munro and Kevin Grittner traded patches which const-ify
functions, per TODO item.
KaiGai Kohei sent in two more revisions of the patch to add object
access hooks with argument support.
Alexander Korotkov sent in two revisions of a patch to add GiST
indexing for range types.
Heikki Linnakangas sent in another revision of the patch to store hot
members of PGPROC out of band.
Simon Riggs sent in a patch to use a latch in WalWriter.
Robert Haas and Simon Riggs traded patches intended to reduce
contention on ProcArrayLock.
Jaime Casanova sent in another revision of the patch to allow seeing
relation free space.
Laurenz Albe sent in a patch to allow disabling SSL compression.
Dimitri Fontaine sent in a PoC patch to create command triggers.
Alexander Korotkov sent in another revision of the patch to collect
frequency statistics for arrays.
Robert Haas sent in a patch to improve error messages emitted by
Dimitri Fontaine sent in two revisions of a patch to add Node support
in outfuncs.c and readfuncs.c
Tomas Vondra sent in a PoC patch to allow triggers on backend startup.
Nikhil Sontakke and Robert Haas traded patches to fix a situation
where concurrent CREATE TABLE/DROP SCHEMA leaves inconsistent
JosÃƒÂ© Arthur Benetasso Villanova and Jan KundrÃƒÂ¡t traded patches to add
context in error messages where check constraints are violated.
Kyotaro HORIGUCHI sent in a patch to allow plugging in different
memory allocators into libpq.
Andrew Dunstan sent in a patch to add finer control to
pg_dump/pg_restore by making the dividing lines among pre-data, data
and post-data sections explicit.
Robert Haas sent in two revisions of a patch to reduce the number of
snapshots taken per query by half.
Simon Riggs sent in a patch to allow fast failover.
Jan Urbanski sent in another revision of the patches to refactor
Greg Smith sent in a patch which adds query normalization of
pg_stat_statements, based on transforming the query tree into a series
of integers and using them to match against previous queries.