== PostgreSQL Weekly News - September 27 2009 ==
The commitfest continues, with alpha2 coming soon.
== PostgreSQL Product News ==
Benetl 3.1, an ETL tool for files, released.
== PostgreSQL Jobs for September ==
== PostgreSQL Local ==
There will be a conference in Seattle, Washington, USA October 16-18,
PGCon Brazil will be take place October 23-24 2009 at Unicamp in
Campinas, Sao Paulo state. Registration open!
PGDay.EU 2009 will be at Telecom ParisTech in Paris, France on
November 6-7, 2009.
OpenSQL Camp in Portland is looking for sponsors. Make your travel plans now! :)
JPUG 10th Anniversary Conference is November 20-21, 2009 in Tokyo, Japan.
FOSDEM 2010 will be in Brussels, Belgium on February 6-7, 2010.
Chemnitzer Linuxtage will be in Chemnitz, Germany on March 13-14, 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 ==
Tom Lane committed:
- Define a new, more extensible syntax for COPY options. This is
intentionally similar to the recently revised syntax for EXPLAIN
options, ie, (name value, ...). The old syntax is still supported
for backwards compatibility, but we intend that any options added in
future will be provided only in the new syntax. Robert Haas,
- Fix crash if a DROP is attempted on an internally-dependent object.
Introduced in 8.4 rewrite of dependency.c. Per bug #5072 from Amit
- Implement the DO statement to support execution of PL code without
having to create a function for it. Procedural languages now have
an additional entry point, namely a function to execute an inline
code block. This seemed a better design than trying to hide the
transient-ness of the code from the PL. As of this patch, only
plpgsql has an inline handler, but probably people will soon write
handlers for the other standard PLs. In passing, remove the
long-dead LANCOMPILER option of CREATE LANGUAGE. Petr Jelinek.
- In pgsql/doc/src/sgml/ref/do.sgml, improve example for DO, per Petr
- In pgsql/src/backend/utils/cache/relcache.c, fix
RelationCacheInitializePhase2 (Phase3, in HEAD) to cope with the
possibility of shared-inval messages causing a relcache flush while
it tries to fill in missing data in preloaded relcache entries.
There are actually two distinct failure modes here: 1. The flush
could delete the next-to-be-processed cache entry, causing the
subsequent hash_seq_search calls to go off into the weeds. This is
the problem reported by Michael Brown, and I believe it also
accounts for bug #5074. The simplest fix is to restart the
hashtable scan after we've read any new data from the catalogs. It
appears that pre-8.4 branches have not suffered from this failure,
because by chance there were no other catalogs sharing the same hash
chains with the catalogs that RelationCacheInitializePhase2 had work
to do for. However that's obviously pretty fragile, and it seems
possible that derivative versions with additional system catalogs
might be vulnerable, so I'm back-patching this part of the fix
anyway. 2. The flush could delete the *current* cache entry, in
which case the pointer to the newly-loaded data would end up being
stored into an already-deleted Relation struct. As long as it was
still deleted, the only consequence would be some leaked space in
CacheMemoryContext. But it seems possible that the Relation struct
could already have been recycled, in which case this represents a
hard-to-reproduce clobber of cached data structures, with
unforeseeable consequences. The fix here is to pin the entry while
we work on it. In passing, also change
RelationCacheInitializePhase2 to Assert that formrdesc() set up the
relation's cached TupleDesc (rd_att) with the correct type OID and
hasoids values. This is more appropriate than silently updating the
values, because the original tupdesc might already have been copied
into the catcache. However this part of the patch is not in HEAD
because it fails due to some questionable recent changes in
formrdesc :-(. That will be cleaned up in a subsequent patch.
- Extend the BKI infrastructure to allow system catalogs to be given
hand-assigned rowtype OIDs, even when they are not "bootstrapped"
catalogs that have handmade type rows in pg_type.h. Give
pg_database such an OID. Restore the availability of C macros for
the rowtype OIDs of the bootstrapped catalogs. (These macros are
now in the individual catalogs' .h files, though, not in pg_type.h.)
This commit doesn't do anything especially useful by itself, but
it's necessary infrastructure for reverting some ill-considered
changes in relcache.c.
- In pgsql/src/backend/utils/cache/relcache.c, revert my
ill-considered change that made formrdesc not insert the correct
relation rowtype OID into the relcache entries it builds. This
ensures that catcache copies of the relation tupdescs will be fully
correct. While the deficiency doesn't seem to have any effect in
the current sources, we have been bitten by not-quite-right catcache
tupdescs before, so it seems like a good idea to maintain the rule
that they should be right.
- In pgsql/src/backend/catalog/genbki.sh, hmm, seems a lot of the
buildfarm is running versions of awk that don't have gensub(). Use
sub() instead, tedious though it be.
- Simplify the bootstrap (BKI) code by getting rid of a useless table
of all the strings seen during the bootstrap run. There might have
been some actual point to doing that, many years ago, but as far as
I can see the only value now is to conserve a bit of memory. Even
if we cared about wasting a megabyte or so during the initdb run,
it'd be far more effective to arrange to release memory at the end
of each BKI command, instead of intentionally hanging onto strings
that might never be used again. Not maintaining the table probably
makes it faster too; but the main point of this patch is to get rid
of a couple hundred lines of unnecessary and rather crufty code.
- In pgsql/src/tools/msvc/Genbki.pm, ooops, fix to Genbki.pm for
ROWTYPE_OID wasn't quite right. Also, make a few spacing tweaks so
it produces exactly the same output as genbki.sh.
- Sync psql's scanner with recent changes in backend scanner's flex
rules. Marko Kreen, Tom Lane.
- In pgsql/src/interfaces/libpq/fe-connect.c, make libpq reject
non-numeric and out-of-range port numbers with a suitable error
message, rather than blundering on and failing with something
opaque. Sam Mason.
- Replace the array-style TupleTable data structure with a simple List
of TupleTableSlot nodes. This eliminates the need to count in
advance how many Slots will be needed, which seems more than worth
the small increase in the amount of palloc traffic during executor
startup. The ExecCountSlots infrastructure is now all dead code,
but I'll remove it in a separate commit for clarity. Per a comment
from Robert Haas.
- Remove no-longer-needed ExecCountSlots infrastructure.
Bruce Momjian committed:
- In pgsql/src/tools/fsync/test_fsync.c, fsync test files. Prevent
creation of 16GB files during fsync testing; only create 16MB files;
backpatch to 8.4.X.
Peter Eisentraut committed:
- Surrogate pair support for U& string and identifier syntax. This is
mainly to make the functionality consistent with the proposed \u
- Unicode escapes in E'...' strings. Marko Kreen.
- In pgsql/src/backend/parser/scan.l, remove backup states from
Unicode escapes patch.
- In pgsql/src/backend/parser/scan.l, prevent isolated second
surrogate in U& syntax.
== Rejected Patches (for now) ==
Jeff Davis's operator exclusion constraints patch. Lots of progress,
useful new feature, and will re-submit for the next commitfest.
== Pending Patches ==
Heikki Linnakangas sent in a reviewed version of the streaming
Heikki Linnakangas sent in a patch atop the Hot Standby patch.
Petr (PJMODOS) Jelinek sent in another revision of the GRANT ON ALL IN
Andrew Dunstan sent in a patch to add \ev (edit view) to psql.
Stef Walter sent in two more revisions of the samehost/sameuser patch
Petr (PJMODOS) Jelinek sent in four more revisions of the DefaultACLs
Michael Paquier sent in another revision of the patch to add shell
commands to pgbench.
Andrew (RhodiumToad) Gierth sent in another revision of the hstore
Roger Leigh sent in another revision of the UTF-8 pretty-print option
David Wheeler sent in a doc patch to go with Andrew (RhodiumToad)
Gierth's hstore patch.
Sam Mason sent in a patch to clean up libpq's port number handling.
Joachim Wieland sent in a patch to fix some performance issues in the
KaiGai Kohei sent in another revision of the large object ACL patch.
Emmanuel Cecchet sent in another revision of the COPY enhancements
KaiGai Kohei sent in another revision of the ACL rework patch.
Pierre Frederic Caillaud sent in another revision of the bulk inserts
Alvaro Herrera sent in another revision of the patch to allow
per-database, per-role GUC settings.
Simon Riggs set up a git repository for Hot Standby, with the
eponymous hot_standby branch, at
Brendan Jurd sent in a patch atop ITAGAKI Takahiro's CREATE TABLE
Marko Kreen sent in a patch to fix up Unicode escape treatment in
Jim Cox sent in a patch to allow pg_dump to note its version and that
of the server it dumps in comments.
Heikki Linnakangas sent in two updated patches for Hot Standby.
ITAGAKI Takahiro sent in another revision of the CREATE TABLE LIKE
expansion patch including Brendan Jurd's additions above.