|| ||David Fetter <david-AT-fetter.org> |
|| ||PostgreSQL Announce <pgsql-announce-AT-postgresql.org> |
|| ||[ANNOUNCE] == PostgreSQL Weekly News - December 16 2012 == |
|| ||Sun, 16 Dec 2012 20:30:49 -0800|
|| ||Article, Thread
== PostgreSQL Weekly News - December 16 2012 ==
There will be a PgDay at PyCon on March 13th, 2012 in the Santa Clara
convention center. More details once we have things organized.
Please put it on your calendar.
== PostgreSQL Product News ==
Barman 1.1.2, a backup and recovery manager for PostgreSQL, released.
psycopg2 2.4.6, a Python connector for PostgreSQL, released.
== PostgreSQL Jobs for December ==
== PostgreSQL Local ==
The FOSDEM PGDay conference that will be held before FOSDEM in
Brussels, Belgium, on Feb 1st, 2013. The CfP for both this event and
for the PG track of FOSDEM are open.
PGDay NYC 2013 will be held on March 22, 2013 in New York City. The
CfP submission deadline is January 7th, 2013 at noon eastern time.
papers AT nycpug DOT org.
PostgreSQL Session will be held on March 28th, 2013 in Paris,
France. The Call for Papers is open.
PGCon 2013 will be held May 23-24 2013, in Ottawa at the University of
Ottawa. The Call for Papers is open.
== 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 email@example.com, German language
to firstname.lastname@example.org, Italian language to email@example.com. Spanish language
== Applied Patches ==
Heikki Linnakangas pushed:
- Fix the tracking of min recovery point timeline. Forgot to update
it at the right place. Also, consider checkpoint record that
switches to new timelne to be on the new timeline. This fixes
erroneous "requested timeline 2 does not contain minimum recovery
point" errors, pointed out by Amit Kapila while testing another
- Update minimum recovery point on truncation. If a file is
truncated, we must update minRecoveryPoint. Once a file is
truncated, there's no going back; it would not be safe to stop
recovery at a point earlier than that anymore. Per report from
Kyotaro HORIGUCHI. Backpatch to 8.4. Before that, minRecoveryPoint
was not updated during recovery at all.
- Consistency check should compare last record replayed, not last
record read. EndRecPtr is the last record that we've read, but not
necessarily yet replayed. CheckRecoveryConsistency should compare
minRecoveryPoint with the last replayed record instead. This caused
recovery to think it's reached consistency too early. Now that we
do the check in CheckRecoveryConsistency correctly, we have to move
the call of that function to after redoing a record. The current
place, after reading a record but before replaying it, is wrong. In
particular, if there are no more records after the one ending at
minRecoveryPoint, we don't enter hot standby until one extra record
is generated and read by the standby, and CheckRecoveryConsistency
is called. These two bugs conspired to make the code appear to work
correctly, except for the small window between reading the last
record that reaches minRecoveryPoint, and replaying it. In the
passing, rename recoveryLastRecPtr, which is the last record
replayed, to lastReplayedEndRecPtr. This makes it slightly less
confusing with replayEndRecPtr, which is the last record read that
we're about to replay. Original report from Kyotaro HORIGUCHI,
further diagnosis by Fujii Masao. Backpatch to 9.0, where Hot
Standby subtly changed the test from "minRecoveryPoint < EndRecPtr"
to "minRecoveryPoint <= EndRecPtr". The former works because where
the test is performed, we have always read one more record than
- In multi-insert, don't go into infinite loop on a huge tuple and
fillfactor. If a tuple is larger than page size minus space
reserved for fillfactor, heap_multi_insert would never find a page
that it fits in and repeatedly ask for a new page from
RelationGetBufferForTuple. If a tuple is too large to fit on any
page, taking fillfactor into account, RelationGetBufferForTuple will
always expand the relation. In a normal insert, heap_insert will
accept that and put the tuple on the new page. heap_multi_insert,
however, does a fillfactor check of its own, and doesn't accept the
newly-extended page RelationGetBufferForTuple returns, even though
there is no other choice to make the tuple fit. Fix that by making
the logic in heap_multi_insert more like the heap_insert logic. The
first tuple is always put on the page RelationGetBufferForTuple
gives us, and the fillfactor check is only applied to the subsequent
tuples. Report from David Gould, although I didn't use his patch.
- Make xlog_internal.h includable in frontend context. This makes
unnecessary the ugly hack used to #include postgres.h in
pg_basebackup. Based on Alvaro Herrera's patch
- Allow a streaming replication standby to follow a timeline switch.
Before this patch, streaming replication would refuse to start
replicating if the timeline in the primary doesn't exactly match the
standby. The situation where it doesn't match is when you have a
master, and two standbys, and you promote one of the standbys to
become new master. Promoting bumps up the timeline ID, and after
that bump, the other standby would refuse to continue. There's
significantly more timeline related logic in streaming replication
now. First of all, when a standby connects to primary, it will ask
the primary for any timeline history files that are missing from the
standby. The missing files are sent using a new replication command
TIMELINE_HISTORY, and stored in standby's pg_xlog directory. Using
the timeline history files, the standby can follow the latest
timeline present in the primary (recovery_target_timeline='latest'),
just as it can follow new timelines appearing in an archive
directory. START_REPLICATION now takes a TIMELINE parameter, to
specify exactly which timeline to stream WAL from. This allows the
standby to request the primary to send over WAL that precedes the
promotion. The replication protocol is changed slightly (in a
backwards-compatible way although there's little hope of streaming
replication working across major versions anyway), to allow
replication to stop when the end of timeline reached, putting the
walsender back into accepting a replication command. Many thanks to
Amit Kapila for testing and reviewing various versions of this
Peter Eisentraut pushed:
- doc: Remove blastwave.org link. Apparently, this service has been
dead since 2008.
- doc: Improve search_path mentions in index. Karl O. Pinc
- NLS: Use msgmerge --previous option. It provides some additional
help to translators.
- doc: Add pg_stat_reset and related functions to index
- doc: Add oid columns to system catalog documentation. Karl O. Pinc
and Jeff Davis
- doc: Remove extra table column. Not all system catalog description
tables have the same number of columns, and the patch to add oid
columns did one bit too much copy-and-pasting.
Bruce Momjian pushed:
- Fix pg_upgrade -O/-o options. Fix previous commit that added
synchronous_commit=off, but broke -O/-o due to missing space in
argument passing. Backpatch to 9.2.
- Fix pg_upgrade for invalid indexes All versions of pg_upgrade
upgraded invalid indexes caused by CREATE INDEX CONCURRENTLY
failures and marked them as valid. The patch adds a check to all
pg_upgrade versions and throws an error during upgrade or --check.
Backpatch to 9.2, 9.1, 9.0. Patch slightly adjusted.
Andrew Dunstan pushed:
- Add mode where contrib installcheck runs each module in a separately
named database. Normally each module is tested in a database named
contrib_regression, which is dropped and recreated at the beginhning
of each pg_regress run. This new mode, enabled by adding
USE_MODULE_DB=1 to the make command line, runs most modules in a
database with the module name embedded in it. This will make
testing pg_upgrade on clusters with the contrib modules a lot
easier. Second attempt at this, this time accomodating make
versions older than 3.82. Still to be done: adapt to the MSVC build
system. Backpatch to 9.0, which is the earliest version it is
reasonably possible to test upgrading from.
- Provide Assert() for frontend code. Per discussion on-hackers. psql
is converted to use the new code. Follows a suggestion from Heikki
- Tidy up from frontend Assert change. Quiet compiler warnings noted
by Peter Eisentraut.
Kevin Grittner pushed:
- Fix performance problems with autovacuum truncation in busy
workloads. In situations where there are over 8MB of empty pages at
the end of a table, the truncation work for trailing empty pages
takes longer than deadlock_timeout, and there is frequent access to
the table by processes other than autovacuum, there was a problem
with the autovacuum worker process being canceled by the deadlock
checking code. The truncation work done by autovacuum up that point
was lost, and the attempt tried again by a later autovacuum worker.
The attempts could continue indefinitely without making progress,
consuming resources and blocking other processes for up to
deadlock_timeout each time. This patch has the autovacuum worker
checking whether it is blocking any other thread at 20ms intervals.
If such a condition develops, the autovacuum worker will persist the
work it has done so far, release its lock on the table, and sleep in
50ms intervals for up to 5 seconds, hoping to be able to re-acquire
the lock and try again. If it is unable to get the lock in that
time, it moves on and a worker will try to continue later from the
point this one left off. While this patch doesn't change the rules
about when and what to truncate, it does cause the truncation to
occur sooner, with less blocking, and with the consumption of fewer
resources when there is contention for the table's lock. The only
user-visible change other than improved performance is that the
table size during truncation may change incrementally instead of
just once. This problem exists in all supported versions but is
infrequently reported, although some reports of performance problems
when autovacuum runs might be caused by this. Initial commit is just
the master branch, but this should probably be backpatched once the
build farm and general developer usage confirm that there are no
surprising effects. Jan Wieck
Tom Lane pushed:
- Disable event triggers in standalone mode. Per discussion, this
seems necessary to allow recovery from broken event triggers, or
broken indexes on pg_event_trigger. Dimitri Fontaine
- Add defenses against integer overflow in dynahash numbuckets
calculations. The dynahash code requires the number of buckets in a
hash table to fit in an int; but since we calculate the desired hash
table size dynamically, there are various scenarios where we might
calculate too large a value. The resulting overflow can lead to
infinite loops, division-by-zero crashes, etc. I (tgl) had
previously installed some defenses against that in commit
299d1716525c659f0e02840e31fbe4dea3, but that covered only one call
path. Moreover it worked by limiting the request size to work_mem,
but in a 64-bit machine it's possible to set work_mem high enough
that the problem appears anyway. So let's fix the problem at the
root by installing limits in the dynahash.c functions themselves.
Trouble report and patch by Jeff Davis.
- Fix filling of postmaster.pid in bootstrap/standalone mode. We
failed to ever fill the sixth line (LISTEN_ADDR), which caused the
attempt to fill the seventh line (SHMEM_KEY) to fail, so that the
shared memory key never got added to the file in standalone mode.
This has been broken since we added more content to our lock files
in 9.1. To fix, tweak the logic in CreateLockFile to add an empty
LISTEN_ADDR line in standalone mode. This is a tad grotty, but
since that function already knows almost everything there is to know
about the contents of lock files, it doesn't seem that it's any
better to hack it elsewhere. It's not clear how significant this
bug really is, since a standalone backend should never have any
children and thus it seems not critical to be able to check the
nattch count of the shmem segment externally. But I'm going to
back-patch the fix anyway. This problem had escaped notice because
of an ancient (and in hindsight pretty dubious) decision to suppress
LOG-level messages by default in standalone mode; so that the
elog(LOG) complaint in AddToDataDirLockFile that should have warned
of the problem didn't do anything. Fixing that is material for a
separate patch though.
Robert Haas pushed:
- Update comment in heapgetpage() regarding PD_ALL_VISIBLE vs. Hot
Standby. Pavan Deolasee, slightly modified by me
Magnus Hagander pushed:
- Properly copy fmgroids.h after clean on Win32. Craig Ringer
== Rejected Patches (for now) ==
No one was disappointed this week :-)
== Pending Patches ==
Peter Geoghegan sent in another revision of a patch to enhance error
Noah Misch sent in a patch fixing some comments in
Amit Kapila sent in another revision of a patch to allow changing
values in postgresql.conf via SQL.
Karl O. Pinc sent in another revision of a patch to elucidate the
nature of the permission system.
Dimitri Fontaine sent in two more revisions of a patch to add
information to event triggers.
Laurenz Albe and KaiGai Kohei traded patch sets to enable writes to
Josh Kupershmidt and Karl O. Pinc traded patches to allow multiple
--tables options for utilities other than pg_dump, where the feature
Andres Freund and Heikki Linnakangas traded patches to add an
XLogReader generic WAL-reading facility.
Mikko Tiihonen sent in a patch to use gcc built-in atomic inc/dec in
lock.c where available.
KaiGai Kohei sent in another revision of a patch to implement
OAT_POST_ALTER object access hooks.
Alexander Korotkov sent in another revision of a patch to improve
statistics and selectivity estimation for ranges.
Alexander Korotkov sent in another revision of a patch to implement
SP-GiST for ranges based on 2d-mapping and quad-tree.
Alexander Korotkov and Jeff Davis traded patches to de-bloat
Andres Freund sent in a patch to add GetOldestXminNoLock as a variant
(and implementation) of GetOldestXmin, along with a patch to do wal
decoding by using GetOldestXminNoLock to compute the initial logical
Pavan Deolasee sent in another revision of a patch to set a visibility
map bit after a HOT prune operation.
Alexander Korotkov sent in another revision of a patch to help support
DFA regex searches with indexes.
Tomas Vondra sent in another revision of a patch to optimizing
dropping multiple tables within a transaction.
Tomas Vondra sent in another revision of a patch to allow trimming
down the amount of log output pgbench generates.
Michael Paquier sent in another revision of a patch to add REINDEX
Sent via pgsql-announce mailing list (firstname.lastname@example.org)
To make changes to your subscription:
to post comments)