PostgreSQL Weekly News – March 21 2010
== PostgreSQL Weekly News – March 21 2010 ==
Bug Fix Releases 8.4.3, 8.3.10, 8.2.16, 8.1.20, 8.0.24 and 7.4.28 are
out now. Upgrade ASAP!
== PostgreSQL Product News ==
dtester 0.1, an event-driven asynchronous test harness, released.
pgbouncer 1.3.2 released.
pgreplay 0.9.0 beta, a program to replay logged SQL statements, released.
== PostgreSQL 9.0 Feature of the Week ==
hstore no longer has a 64kB limit on key lengths, and does have btree
and hash operator classes, allowing for GROUP BY, DISTINCT, etc.
== PostgreSQL Jobs for March ==
== PostgreSQL Local ==
JDCon East will take place March 25-28, 2010 in Philadelphia, PA, USA.
The San Francisco PostgreSQL Users’ Group will be having a Test Fest
Saturday April 3, 11am to 6pm. There will be live video. Help make
this a world-wide event!
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.
The CfP for OSBridge is open! OSBridge will be June 1-4, 2010 in
OSCON will take place in Portland, Oregon July 19-23, 2010.
== 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.
== Applied Patches ==
Simon Riggs committed:
– In pgsql/src/backend/access/transam/xlog.c, remove incorrect comment
from GetWriteRecPtr(): the return value is always correct, as
described in comments at start of xlog.c
– In pgsql/doc/src/sgml/func.sgml, document that trig functions
accept/return values in radians.
– In pgsql/doc/src/sgml/func.sgml, fix typo in math function docs,
spotted by Heikki Linnakangas.
– In pgsql/doc/src/sgml/protocol.sgml, fix typo in streaming
replication protocol docs.
– Add vacuum_defer_cleanup_age to postgresql.conf.sample.
– Reset btpo.xact following recovery of btree delete page. Add
btpo_xact field into WAL record and reset it from there, rather than
using FrozenTransactionId which can lead to some corner case bugs.
Problem report and suggested route to a fix from Heikki Linnakangas,
details by me.
– Adjust comment in .history file to match recovery target specified.
Comment present since 8.0 was never fully meaningful, since two
recovery targets cannot be specified. Refactor recovery target type
to make this change and associated code easier to understand. No
change in function. Bug report arising from internal support
– In pgsql/src/include/access/xlog_internal.h, update XLOG_PAGE_MAGIC
to recognise WAL format changes.
– In pgsql/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c,
minor tweaks on libpqrcv_connect(): ensure conninfo_repl is
correctly sized and expand comment to explain otherwise undocumented
use of replication connection parameter.
– Add connection messages for streaming replication. log_connections
was broken for a replication connection and no messages were
displayed on either standby or primary, at any debug level.
Connection messages needed to diagnose session drop/reconnect
events. Use LOG mode for now, discuss lowering in later releases.
– In pgsql/doc/src/sgml/high-availability.sgml, clarify docs about
database parameter in streaming replication primary_conninfo. Docs
were unclear on whether or not database=replication was required,
nor did they mention the FATAL error this causes if database
parameter is mentioned explicitly, whatever its value.
– In pgsql/src/include/access/nbtree.h, further corrections of
mismatching struct and btree SizeOf macros. In this case,
correction is to remove now unused fields from struct. Since these
were unused and full of garbage anyway, no version change.
Heikki Linnakangas committed:
– In pgsql/src/backend/replication/walsender.c, throw a nicer error
message if a standby server attempts to connect while the master is
still in recovery. We don’t support cascading slaves yet. Patch by
Fujii Masao, with slightly changed wording.
– Add restartpoint_command option to recovery.conf. Fix bug in %r
handling in recovery_end_command, it always came out as 0 because
InRedo was cleared before recovery_end_command was executed. Also,
always take ControlFileLock when reading checkpoint location for %r.
The recovery_end_command bug and the missing locking was present in
8.4 as well, that part of this patch will be backported separately.
– In pgsql/src/backend/access/transam/xlog.c, fix bug in %r handling
in recovery_end_command, it always came out as 0 because InRedo was
cleared before recovery_end_command was executed. Also, always take
ControlFileLock when reading checkpoint location for %r. That
didn’t matter before, but in 8.4 bgwriter is active during recovery
and can modify the control file concurrently.
Tom Lane committed:
– In pgsql/doc/src/sgml/ref/create_index.sgml, fix incorrect example
in CREATE INDEX reference page, per Josh Kupershmidt. Also fix and
uncomment an old example of creating a GIST index, and make a couple
of other minor editorial adjustments.
– Pass incompletely-transformed aggregate argument lists as separate
parameters to transformAggregateCall, instead of abusing fields in
Aggref to carry them temporarily. No change in functionality but
hopefully the code is a bit clearer now. Per gripe from
– In pgsql/doc/src/sgml/func.sgml, fix missing parentheses for
current_query(), per bug #5378. Also make a couple other minor
– In pgsql/src/include/access/nbtree.h, fix oversight in btpo.xact
patch; it was in fact installing garbage in the xact field on
replay, due to not writing out all the data in the wal log struct.
– Modify error context callback functions to not assume that they can
fetch catalog entries via SearchSysCache and related operations.
Although, at the time that these callbacks are called by elog.c, we
have not officially aborted the current transaction, it still seems
rather risky to initiate any new catalog fetches. In all these
cases the needed information is readily available in the caller and
so it’s just a matter of a bit of extra notation to pass it to the
callback. Per crash report from Dennis Koegel. I’ve concluded that
the real fix for his problem is to clear the error context stack at
entry to proc_exit, but it still seems like a good idea to make the
callbacks a bit less fragile for other cases. Backpatch to 8.4. We
could go further back, but the patch doesn’t apply cleanly. In the
absence of proof that this fixes something and isn’t just paranoia,
I’m not going to expend the effort.
– In pgsql/src/backend/storage/ipc/ipc.c, clear error_context_stack
and debug_query_string at the beginning of proc_exit, so that we
won’t try to attach any context printouts to messages that get
emitted while exiting. Per report from Dennis Koegel, the context
functions won’t necessarily work after we’ve started shutting down
the backend, and it seems possible that debug_query_string could be
pointing at freed storage as well. The context information doesn’t
seem particularly relevant to such messages anyway, so there’s
little lost by suppressing it. Back-patch to all supported
branches. I can only demonstrate a crash with log_disconnections
messages back to 8.1, but the risk seems real in 8.0 and before
Peter Eisentraut committed:
– Update broken and permanently moved links.
– Make typography consistent in the GRANT and REVOKE documentation.
– In pgsql/src/interfaces/libpq/fe-connect.c, fix peculiar,
untranslatable message concatenation attempt
– Message style tuning for PL/Perl(U).
– Don’t link PL/Python against LOCALMODLIBS. This variable is
apparently only for Python internally. In newer releases of Python
this variable pulls in more and more libraries that users are less
likely to have, leading to potential build failures.
– Use data-type specific conversion functions also in plpy.execute.
In PLy_spi_execute_plan, use the data-type specific
Python-to-PostgreSQL conversion function instead of passing
everything through InputFunctionCall as a string. The equivalent
fix was already done months ago for function parameters and return
values, but this other gateway between Python and PostgreSQL was
apparently forgotten. As a result, data types that need special
treatment, such as bytea, would misbehave when used with
– In pgsql/src/pl/plperl/plperl.c, message style tuning.
– Prevent the injection of invalidly encoded strings by PL/Python into
PostgreSQL with a few strategically placed pg_verifymbstr calls.
– Also print the libpq error message when lo_create or lo_open fails.
– Message tuning.
Magnus Hagander committed:
– In pgsql/doc/src/sgml/config.sgml, typo fixes. Fujii Masao.
Bruce Momjian committed:
– In pgsql/src/tools/RELEASE_CHANGES, mention way to get commit
details for release notes.
– In pgsql/doc/src/sgml/release.sgml, update sgml release note markup
– In pgsql/doc/src/sgml/release-9.0.sgml, create 9.0 release notes;
keep 9.0-alpha release notes in place.
– Move server-side languages up one section in the 9.0 release notes.
– In 9.0 release notes, move libpq/ecpg up into their own sections,
like I did with server-side languages.
– Add links to documentation sections in 9.0 release notes. Also
update tagging instructions, and add id tags to a few documentation
– Add more 9.0 release note documentation links.
– Remove 9.0 release notes xref’s to HISTORY.html can be built.
Document this restriction.
Robert Haas committed:
– In pgsql/src/backend/commands/tablecmds.c, forbid renaming columns
of objects whose column names are system-generated. KaiGai Kohei,
with adjustments to the comments.
Michael Meskes committed:
– In src/interfaces/ecpg/preproc/ecpg.trailer, fixed ecpg parser to
allow more than one C preprocessor command inside a declare section.
– ECPG only copied #include statements instead of processing them
according to commandline option “-i”. This change fixes this and
adds a test case. It also honors #include_next, although this is
probably never used for embedded SQL.
– In pgsql/src/interfaces/ecpg/ecpglib/prepare.c, correctly name
functions in debug output in ecpglib. When the functions were
refactored the debug output wasn’t adjusted.
– Adjusted regression test results to the change I made in debug
output for ecpglib.
– ECPG’s parser now accepts and handles variables as arguments for the
FREE command. Informix allows variables as argument to the embedded
SQL command FREE. Given that we only allow freeing cursors via FREE
for compatibility reasons only we should do the same.
– In pgsql/src/tools/msvc/ecpg_regression.proj, adding special command
line option that is now needed for the one ecpg regression test that
== Rejected Patches (for now) ==
No one was disappointed this week 🙂
== Pending Patches ==
Pavel Stehule sent in four revisions of a patch to reduce the memory
usage in ispell dictionaries.
ITAGAKI Takahiro and Greg Smith sent in patches to implement
per-thread log files for pgbench -l.
Heikki Linnakangas sent in a patch which adds a restartpoint_command
option to recovery.conf which is executed at every restartpoint in
streaming replication. It is analogous to the recovery_end_command,
which cleans up old WALs, and like recovery_end_command, takes a
parameter %r which tells it about the oldest WAL to retain.
KaiGai Kohei sent in a patch for 9.1 which refactors access control
for ALTER TABLE.
ITAGAKI Takahiro sent in another revision of the patch to fix the
locale issue on Windows.
Alvaro Herrera sent in a patch to deal with the RESET ALL access
Yeb Havinga sent in a patch which changes EXPLAIN output to show the
Heikki Linnakangas sent in a patch to keep trying to make progess in
recovery in standby mode by attempting to restore files first from
archive, then pg_xlog, then streaming from master.
Tim Landscheidt sent in a patch to clarify the generate_subscripts()
Comments are closed.