--- /dev/null
+<!-- BEGIN page_title_block -->
+Weekly News - June 07 2009
+<!-- END page_title_block -->
+
+<h1>PostgreSQL Weekly News - June 07 2009</h1>
+
+<p>
+The CfP for PGCon Brazil is open!
+<a href="http://pgcon.postgresql.org.br/2009/chamadas.en.php">http://pgcon.postgresql.org.br/2009/chamadas.en.php</a>
+</p>
+
+<p>
+ITPUG will be at the Italian Conference for Free Software which will
+be held in Bologna on June 12 and 13. Gabriele Bartolini will
+present, "Students and open-source: the PostgreSQL case" on Saturday
+June 13 at 10:35am.
+<a href="http://www.confsl.org/">http://www.confsl.org/</a>
+</p>
+
+<h2>PostgreSQL Product News</h2>
+<p>
+pgtheme, specifically developed for Drupal 6.x theme system, released.
+<a href="http://drupal.org/project/pgtheme">http://drupal.org/project/pgtheme</a>
+</p>
+
+<h2>PostgreSQL 8.4 Feature of the Week</h2>
+<p>
+quote_nullable: just like quote_literal, only it returns the string
+NULL for a null argument.
+</p>
+
+<h2>PostgreSQL Tip of the Week</h2>
+<p>
+The "ltree" contrib module is an implementation of indexed
+contatination trees, and is very appropriate for representing a
+filesystem or similar heirarchy in your database.
+</p>
+
+<h2>PostgreSQL Local</h2>
+<p>
+Save The Date: pgDay San Jose. Sunday, July 19th 2009 immediately
+before OSCON. CfP, more info TBA!
+</p>
+
+<p>
+PGCon Brazil will be take place October 23-24 2009 at Unicamp in
+Campinas, Sao Paulo state.
+</p>
+
+<p>
+PGDay.EU 2009 will be at Telecom ParisTech in Paris, France on
+November 6-7, 2009.
+<a href="http://www.pgday.eu/">http://www.pgday.eu/</a>
+</p>
+
+<p>
+JPUG 10th Anniversary Conference has started its Request for
+Proposals. The conference is November 20-21, 2009 in Tokyo, Japan.
+<a href="http://archives.postgresql.org/pgsql-announce/2009-05/msg00018.php">http://archives.postgresql.org/pgsql-announce/2009-05/msg00018.php</a>
+</p>
+
+<h2>PostgreSQL in the News</h2>
+<p>
+Planet PostgreSQL: <a href="http://planet.postgresql.org/">http://planet.postgresql.org/</a>
+</p>
+
+<p>
+PostgreSQL Weekly News is brought to you this week by David Fetter
+and Josh Berkus.
+</p>
+
+<p>
+Submit news and announcements by Sunday at 3:00pm Pacific time.
+Please send English language ones to david@fetter.org, German language
+to pwn@pgug.de, Italian language to pwn@itpug.org.
+</p>
+
+<h2>Applied Patches</h2>
+<p>
+Tom Lane committed:
+</p>
+
+<p>
+- Fix DecodeInterval to report an error for multiple occurrences of
+ DAY, WEEK, YEAR, DECADE, CENTURY, or MILLENIUM fields, just as it
+ always has done for other types of fields. The previous behavior
+ seems to have been a hack to avoid defining bit-positions for all
+ these field types in DTK_M() masks, rather than something that was
+ really considered to be desired behavior. But there is room in the
+ masks for these, and we really need to tighten up at least the
+ behavior of DAY and YEAR fields to avoid unexpected behavior
+ associated with the 8.4 changes to interpret ambiguous fields based
+ on the interval qualifier (typmod) value. Per my example and
+ proposed patch.
+</p>
+
+<p>
+- Change AdjustIntervalForTypmod to not discard higher-order field
+ values on the grounds that they don't fit into the specified
+ interval qualifier (typmod). This behavior, while of long standing,
+ is clearly wrong per spec --- for example the value INTERVAL '999'
+ SECOND means 999 seconds and should not be reduced to less than 60
+ seconds. In some cases there could be grounds to raise an error if
+ higher-order field values are not given as zero; for example '1 year
+ 1 month'::INTERVAL MONTH should arguably be taken as an error rather
+ than equivalent to 13 months. However our internal representation
+ doesn't allow us to do that in a fashion that would consistently
+ reject all and only the cases that a strict reading of the spec
+ would suggest. Also, seeing that for example INTERVAL '13' MONTH
+ will print out as '1 year 1 mon', we have to be careful not to
+ create a situation where valid data will fail to dump and reload.
+ The present patch therefore takes the attitude of not throwing an
+ error in any such case. We might want to revisit that in future but
+ it would take more redesign than seems prudent in late beta. Per a
+ complaint from Sebastien Flaesch and subsequent discussion. While
+ at other times we might have just postponed such an issue to the
+ next development cycle, 8.4 already has changed the parsing of
+ interval literals quite a bit in an effort to accept all
+ spec-compliant cases correctly. This seems like a change that
+ should be part of that rather than coming along later.
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/config.sgml, Remove the old advice to keep
+ from_collapse_limit less than geqo_threshold, instead just pointing
+ out that a larger value may trigger use of GEQO. Per Robert Haas.
+ In passing, do a bit of wordsmithing on the Genetic Query Optimizer
+ section.
+</p>
+
+<p>
+- In pgsql/src/backend/commands/copy.c, improve comment about 'if (1)'
+ hack in copy.c macros.
+</p>
+
+<p>
+- In pgsql/src/bin/initdb/initdb.c, change rather bizarre code
+ ordering in get_id(). This isn't strictly cosmetic --- I'm
+ wondering if geteuid could have side effects on errno, thus possibly
+ resulting in a misleading error message after failure of getpwuid.
+</p>
+
+<p>
+- In pgsql/src/backend/tsearch/ts_selfuncs.c, fix tsquerysel() to not
+ fail on an empty TSQuery. Per report from Tatsuo Ishii.
+</p>
+
+<p>
+- Clean up ecpg's use of mmerror(): const-ify the format argument, add
+ an __attribute__() marker so that gcc can validate the format string
+ against the actual arguments, get rid of overcomplicated and unsafe
+ usage in base_yyerror().
+</p>
+
+<p>
+- Improve the recently-added support for properly pluralized error
+ messages by extending the ereport() API to cater for pluralization
+ directly. This is better than the original method of calling
+ ngettext outside the elog.c code because (1) it avoids double
+ translation, which wastes cycles and in the worst case could give a
+ wrong result; and (2) it avoids having to use a different coding
+ method in PL code than in the core backend. The client-side uses of
+ ngettext are not touched since neither of these concerns is very
+ pressing in the client environment. Per my proposal of yesterday.
+</p>
+
+<p>
+- Remove a couple of debugging messages that have been #ifdef'd out
+ for ages. Seems silly to ask translators to expend work on these,
+ especially in pluralized variants.
+</p>
+
+<p>
+- Trivial code style cleanup around a couple of ngettext calls.
+</p>
+
+<p>
+- GIN's ItemPointerIsMin, ItemPointerIsMax, and ItemPointerIsLossyPage
+ macros should use GinItemPointerGetBlockNumber/
+ GinItemPointerGetOffsetNumber, not ItemPointerGetBlockNumber/
+ ItemPointerGetOffsetNumber, because the latter will Assert() on
+ ip_posid == 0, ie a "Min" pointer. (Thus, ItemPointerIsMin has
+ never worked at all, but it seems unused at present.) I'm not
+ certain that the case can occur in normal functioning, but it's
+ blowing up on me while investigating Tatsuo-san's data corruption
+ problem. In any case it seems like a problem waiting to bite
+ someone. Back-patch just in case this really is a problem for
+ somebody in the field.
+</p>
+
+<p>
+- Fix a serious bug introduced into GIN in 8.4: now that
+ MergeItemPointers() is supposed to remove duplicate heap TIDs, we
+ have to be sure to reduce the tuple size and posting-item count
+ accordingly in addItemPointersToTuple(). Failing to do so resulted
+ in the effective injection of garbage TIDs into the index contents,
+ ie, whatever happened to be in the memory palloc'd for the new
+ tuple. I'm not sure that this fully explains the index corruption
+ reported by Tatsuo Ishii, but the test case I'm using no longer
+ fails.
+</p>
+
+<p>
+- In pgsql/src/pl/plperl/plperl.c, move variable declaration to avoid
+ 'unused variable' warning when the ifdef doesn't trigger. Not worth
+ back-patching. Per buildfarm reports.
+</p>
+
+<p>
+- Improve the IndexVacuumInfo/IndexBulkDeleteResult API to allow
+ somewhat sane behavior in cases where we don't know the heap tuple
+ count accurately; in particular partial vacuum, but this also makes
+ the API a bit more useful for ANALYZE. This patch adds
+ "estimated_count" flags to both structs so that an approximate count
+ can be flagged as such, and adjusts the logic so that approximate
+ counts are not used for updating pg_class.reltuples. This fixes my
+ previous complaint that VACUUM was putting ridiculous values into
+ pg_class.reltuples for indexes. The actual impact of that bug is
+ limited, because the planner only pays attention to reltuples for an
+ index if the index is partial; which probably explains why beta
+ testers hadn't noticed a degradation in plan quality from it. But
+ it needs to be fixed. The whole thing is a bit messy and should be
+ redesigned in future, because reltuples now has the potential to
+ drift quite far away from reality when a long period elapses with no
+ non-partial vacuums. But this is as good as it's going to get for
+ 8.4.
+</p>
+
+<p>
+- Revert my patch of 2009-04-04 that removed contrib/intarray's
+ definitions of the <@ and @> operators. These are not in fact
+ equivalent to the built-in anyarray operators of the same names,
+ because they have different behavior for empty arrays, namely they
+ don't think empty arrays are contained in anything. That is
+ mathematically wrong, no doubt, but until we can persuade GIN
+ indexes to implement the mathematical definition we should probably
+ not change this. Another reason for not changing it now is that we
+ can't yet ensure the opclasses will be updated correctly in a
+ dump-and-reload upgrade. Per recent discussions.
+</p>
+
+<p>
+Joe Conway committed:
+</p>
+
+<p>
+- In pgsql/contrib/dblink/dblink.c, fix dblink_get_result() as
+ reported by Oleksiy Shchukin. Refactor a bit while we're at it per
+ request by Tom Lane. Specifically, don't try to perform
+ dblink_send_query() via dblink_record_internal() -- it was
+ inappropriate and ugly.
+</p>
+
+<p>
+- Add support for using SQL/MED compliant FOREIGN DATA WRAPPER,
+ SERVER, and USER MAPPING as method to supply dblink connect
+ parameters. Per mailing list and PGCon discussions.
+</p>
+
+<p>
+Heikki Linnakangas committed:
+</p>
+
+<p>
+- In pgsql/src/backend/access/transam/xlog.c, only recycle normal
+ files in pg_xlog as WAL segments. pg_standby creates symbolic links
+ with the -l option, and as Fujii Masao pointed out we ended up
+ overwriting files in the archive directory before this patch. Patch
+ by Aidan Van Dyk, Fujii Masao and me.
+</p>
+
+<p>
+Bruce Momjian committed:
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/config.sgml, add example of how to generate
+ the session identifier from pg_stat_activity.
+</p>
+
+<p>
+- In pgsql/src/backend/commands/copy.c, add comment about why
+ "((void) 0)" is used in copy macros.
+</p>
+
+<p>
+- Wording improvement for recent sesssion identifier SQL query.
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/config.sgml, wording improvement for recent
+ sesssion identifier SQL query.
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/backup.sgml, remove sleep() from backup script
+ example; not needed anymore. Fujii Masao.
+</p>
+
+<p>
+Andrew Dunstan committed:
+</p>
+
+<p>
+- Initialise perl library as documented in perl API. Backpatch to
+ release 7.4.
+</p>
+
+<p>
+- Search for versioned perl library instead of using hardcoded name on
+ Windows. Backpatch to release 8.3
+</p>
+
+<p>
+- Adjust recent PERL_SYS_INIT3 call to avoid platforms where it might
+ fail, and to remove compilation warning. Backpatch the release 7.4.
+</p>
+
+<h2>Rejected Patches (for now)</h2>
+<p>
+No one was disappointed this week :-)
+</p>
+
+<h2>Pending Patches</h2>