--- /dev/null
+<!-- BEGIN page_title_block -->
+Weekly News - December 20 2009
+<!-- END page_title_block -->
+
+<h1>PostgreSQL Weekly News - December 20 2009</h1>
+
+<p>
+Commitfest 2009-11 is now closed. Kudos to Greg Smith for managing
+this one, and to all who reviewed, patched, and otherwise
+participated.
+</p>
+
+<p>
+The Call for Papers for East is open until January 30, 2010. Details at:
+<a href="http://www.postgresqlconference.org/">http://www.postgresqlconference.org/</a>
+</p>
+
+<p>
+PgUS 2009 Board Elections are happening now.
+<a href="https://www.postgresql.us/elections/2009">https://www.postgresql.us/elections/2009</a>
+</p>
+
+<p>
+Seeking booth staffers for Open Day Linux Conf AU in Wellington, NZ
+January 23, 2009, 11-2pm, Contact selena -at- postgresql.org to
+volunteer.
+</p>
+
+<h2>PostgreSQL Product News</h2>
+<p>
+Alerce 1.0.0, a synchronous replication system for Python, released.
+<a href="http://pgfoundry.org/projects/pyreplica/">http://pgfoundry.org/projects/pyreplica/</a>
+</p>
+
+<p>
+Gluster Storage Platform 3.0 released.
+<a href="http://www.gluster.org/">http://www.gluster.org/</a>
+</p>
+
+<p>
+pgpool-II 2.3.1, a connection pooler and more, released.
+<a href="http://pgfoundry.org/projects/pgpool/">http://pgfoundry.org/projects/pgpool/</a>
+</p>
+
+<p>
+pg_rman 1.1.1, an online backup and restore tool for PostgreSQL, released.
+<a href="http://code.google.com/p/pg-rman/">http://code.google.com/p/pg-rman/</a>
+</p>
+
+<p>
+Devrim GUNDUZ has created a new LiveCD based on Fedora 12 and
+PostgreSQL 8.4.2.
+<a href="http://pglivecd.org/">http://pglivecd.org/</a>
+</p>
+
+<h2>PostgreSQL 8.5 Feature of the Week</h2>
+<p>
+WHEN clauses on Triggers. In 8.5Alpha3, you will be able to create
+triggers with a WHEN clause so that they will only execute if specific
+values or conditions occur. Thanks Itagaki Takahiro and the NTT team.
+</p>
+
+<h2>PostgreSQL Tip of the Week</h2>
+<p>
+Tip Of The Week: PostgreSQL comes with 3 ways to handle trees: WITH
+RECURSIVE queries, the ltree contrib module, and the connect_by()
+function in the tablefunc supplied module.
+</p>
+
+<h2>PostgreSQL Jobs for December</h2>
+<p>
+<a href="http://archives.postgresql.org/pgsql-jobs/2009-12/threads.php">http://archives.postgresql.org/pgsql-jobs/2009-12/threads.php</a>
+</p>
+
+<h2>PostgreSQL Local</h2>
+<p>
+The New York Capital District PUG's first meeting will be January 7,
+2010.
+<a href="http://nycdpug.x10hosting.com/">http://nycdpug.x10hosting.com/</a>
+</p>
+
+<p>
+Stefan Keller will be teach a course called, "Introducion to
+PostGIS/PostgreSQL" at the University of Applied Sciences Rapperswil
+(HSR) on January 14, 2010 in Zurich, Switzerland.
+<a href="http://www.gis.hsr.ch/wiki/Agenda">http://www.gis.hsr.ch/wiki/Agenda</a>
+</p>
+
+<p>
+PGDay-Cuba 2010 will be held 4-6 February 2010, in La Havana at the
+University of Science Informatic. Attendees from Cuba, the Dominican
+Republic and Venezuela are invited.
+</p>
+
+<p>
+FOSDEM 2010 will be in Brussels, Belgium on February 6-7, 2010.
+<a href="http://www.fosdem.org/">http://www.fosdem.org/</a>
+</p>
+
+<p>
+Chemnitzer Linuxtage will be in Chemnitz, Germany on March 13-14, 2010.
+<a href="http://chemnitzer.linux-tage.de/">http://chemnitzer.linux-tage.de/</a>
+</p>
+
+<p>
+PgCon 2010 will be held May 20-21 2010 in Ottawa with tutorials before
+on the 18th and 19th. The RfP is open!
+<a href="http://www.pgcon.org/2010/papers.php">http://www.pgcon.org/2010/papers.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>Reviews</h2>
+<p>
+Greg Smith reviewed ITAGAKI Takahiro's latest patch to enable pgbench
+to launch shell commands.
+</p>
+
+<p>
+Marko Kreen reviewed Kurt Harriman's patch to remove the gcc
+dependency in the definition of inline functions.
+</p>
+
+<p>
+Hiroyuki Yamada found a bug in hot standby where it can freeze when
+the startup process calls LockBufferForCleanup(), complete with repro.
+</p>
+
+<h2>Applied Patches</h2>
+<p>
+ITAGAKI Takahiro committed:
+</p>
+
+<p>
+- In pgsql/src/bin/pg_ctl/pg_ctl.c, fix pg_ctl initdb without options.
+ Passing NULL string to snprintf is avoided.
+</p>
+
+<p>
+- Add \shell and \setshell meta commands to pgbench. \shell command
+ runs an external shell command. \setshell also does the same and
+ sets the result to a variable. Original patch by Michael Paquier
+ with some editorialization by ITAGAKI Takahiro, and reviewed by Greg
+ Smith.
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/ref/alter_large_object.sgml, add missing Id
+ keyword to alter_large_object.sgml.
+</p>
+
+<p>
+- Add a whitespace to fix the query to dump large objects.
+ PL/pgSQL-by-default patch broke the code for 8.3 <= server_version <
+ 8.5.
+</p>
+
+<p>
+Robert Haas committed:
+</p>
+
+<p>
+- Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
+ This patch also removes buffer-usage statistics from the
+ track_counts output, since this (or the global server statistics) is
+ deemed to be a better interface to this information. Itagaki
+ Takahiro, reviewed by Euler Taveira de Oliveira.
+</p>
+
+<p>
+- Several fixes for EXPLAIN (FORMAT YAML), plus one for EXPLAIN
+ (FORMAT JSON). ExplainSeparatePlans() was busted for both JSON and
+ YAML output - the present code is a holdover from the original
+ version of my machine-readable explain patch, which didn't have the
+ grouping_stack machinery. Also, fix an odd distribution of labor
+ between ExplainBeginGroup() and ExplainYAMLLineStarting() when
+ marking lists with "- ", with each providing one character. This
+ broke the output format for multi-query statements. Also, fix
+ ExplainDummyGroup() for the YAML output format. Along the way, make
+ the YAML format use escape_yaml() in situations where the JSON
+ format uses escape_json(). Right now, it doesn't matter because all
+ the values are known not to need escaping, but it seems safer this
+ way. Finally, I added some comments to better explain what the YAML
+ output format is doing. Greg Sabino Mullane reported the issues
+ with multi-query statements. Analysis and remaining cleanups by
+ Robert Haas.
+</p>
+
+<p>
+- Improve documentation for pg_largeobject changes. Rewrite the
+ documentation in more idiomatic English, and in the process make it
+ somewhat more succinct. Move the discussion of specific large
+ object privileges out of the "server-side functions" section, where
+ it certainly doesn't belong, and into "implementation features".
+ That might not be exactly right either, but it doesn't seem worth
+ creating a new section for this amount of information. Fix a few
+ spelling and layout problems, too.
+</p>
+
+<p>
+- Fix a few typos in the latest 8.5alpha3 release notes.
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/backup.sgml, fix two small typos in Hot
+ Standby docs. John Naylor.
+</p>
+
+<p>
+- More cleanups for the recent large object permissions patch.
+ Rewrite or adjust various comments for clarity. Remove one bogus
+ comment that doesn't reflect what the code actually does. Improve
+ the description of the lo_compat_privileges option.
+</p>
+
+<p>
+Tom Lane committed:
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/pgbench.sgml, fix broken markup.
+</p>
+
+<p>
+- Support ORDER BY within aggregate function calls, at long last
+ providing a non-kluge method for controlling the order in which
+ values are fed to an aggregate function. At the same time eliminate
+ the old implementation restriction that DISTINCT was only supported
+ for single-argument aggregates. Possibly release-notable behavioral
+ change: formerly, agg(DISTINCT x) dropped null values of x
+ unconditionally. Now, it does so only if the agg transition
+ function is strict; otherwise nulls are treated as DISTINCT normally
+ would, ie, you get one copy. Andrew Gierth, reviewed by Hitoshi
+ Harada.
+</p>
+
+<p>
+- Add a hook to let loadable modules get control at ProcessUtility
+ execution, and use it to extend contrib/pg_stat_statements to track
+ utility commands. Itagaki Takahiro, reviewed by Euler Taveira de
+ Oliveira.
+</p>
+
+<p>
+- In pgsql/src/backend/tsearch/wparser_def.c, avoid unnecessary
+ copying of source string when generating a cloned TParser. For long
+ source strings the copying results in O(N^2) behavior, and the
+ multiplier can be significant if wide-char conversion is involved.
+ Andres Freund, reviewed by Kevin Grittner.
+</p>
+
+<p>
+- Avoid a premature coercion failure in transformSetOperationTree()
+ when presented with an UNKNOWN-type Var, which can happen in cases
+ where an unknown literal appeared in a subquery. While many such
+ cases will fail later on anyway in the planner, there are some cases
+ where the planner is able to flatten the query and replace the Var
+ by the constant before it has to coerce the union column to the
+ final type. I had added this check in 8.4 to provide earlier/better
+ error detection, but it causes a regression for some cases that
+ worked OK before. Fix by not making the check if the input node is
+ UNKNOWN type and not a Const or Param. If it isn't going to work,
+ it will fail anyway at plan time, with the only real loss being
+ inability to provide an error cursor. Per gripe from Britt Piehler.
+ In passing, rename a couple of variables to remove confusion from an
+ inner scope masking the same variable names in an outer scope.
+</p>
+
+<p>
+- Force the TZ environment variable to be set during initdb. This is
+ to short-circuit the rather expensive identify_system_timezone()
+ procedure, which we have no real need for during initdb since
+ nothing done here depends on the timezone setting. Since we launch
+ quite a few standalone backends during the initdb sequence, this
+ adds up to a significant savings, and seems worth doing to save
+ developer time even though it will hardly matter to end users. Per
+ my report today on pgsql-hackers.
+</p>
+
+<p>
+- Fix link that doesn't work in standalone INSTALL document.
+</p>
+
+<p>
+- Bump catversion to reflect the fact that Hiroshi Saito patch changed
+ pg_proc contents, and PG_CONTROL_VERSION to reflect the fact that it
+ changed pg_control contents. (I see we did at least remember to
+ change XLOG_PAGE_MAGIC for the WAL contents changes.)
+</p>
+
+<p>
+- Adjust some more places in the documentation to match the fact that
+ plpgsql is now installed by default.
+</p>
+
+<p>
+- Join in the fun of editorializing on the alpha release notes.
+</p>
+
+<p>
+- plpgsql patch broke the MSVC build, too.
+</p>
+
+<p>
+- Sigh, I managed to break the no-links-in-plain-text-docs rule too...
+</p>
+
+<p>
+- There is no good reason for the CREATE TABLE LIKE INCLUDING COMMENTS
+ code to have hard-wired knowledge of the rules for naming index
+ columns. It can just look at the actual names in the source index,
+ instead. Do some minor formatting cleanup too.
+</p>
+
+<p>
+Peter Eisentraut committed:
+</p>
+
+<p>
+- Python 3 support in PL/Python. Behaves more or less unchanged
+ compared to Python 2, but the new language variant is called
+ plpython3u. Documentation describing the naming scheme is included.
+</p>
+
+<p>
+- If there is no sigdelset(), define it as a macro. This removes some
+ duplicate code that recreated the identical workaround when the
+ newer signal API is missing.
+</p>
+
+<p>
+- Don't unblock SIGQUIT in the SIGQUIT handler. This was possibly
+ linked to a deadlock-like situation in glibc syslog code invoked by
+ the ereport call in quickdie(). In any case, a signal handler
+ should not unblock its own signal unless there is a specific reason
+ to.
+</p>
+
+<p>
+- 8.5alpha3 release notes up to Fri Dec 18 21:37:38 2009 +0000
+</p>
+
+<p>
+- Translation updates
+</p>
+
+<p>
+- Add hot standby to release notes
+</p>
+
+<p>
+- Add documentation why reassigning PL/Python function parameters in
+ the function body can have undesirable outcomes. (bug #5232)
+</p>
+
+<p>
+Michael Meskes committed:
+</p>
+
+<p>
+- Fixed auto-prepare to not try preparing statements that are not
+ preparable. Bug found and solved by Zoltan Boszormenyi some small
+ adjustments by Michael Meskes.
+</p>
+
+<p>
+- Reverting accidently commited changes.
+</p>
+
+<p>
+Magnus Hagander committed:
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/hstore.sgml, remove spurious '22' that clearly
+ shouldn't be there. David E. Wheeler.
+</p>
+
+<p>
+Bruce Momjian committed:
+</p>
+
+<p>
+- Install server-side language PL/pgSQL by default.
+</p>
+
+<p>
+- Add comments about places where system oids have to be preserved for
+ binary migration.
+</p>
+
+<p>
+- Convert tabs to spaces in SGML.
+</p>
+
+<p>
+Alvaro Herrera committed:
+</p>
+
+<p>
+- In pgsql/doc/src/sgml/start.sgml, update tutorial on the fact that
+ backslash commands are no longer listed in psql's startup banner.
+</p>
+
+<p>
+- Update ecpg regression tests to plpgsql installed by default.
+</p>
+
+<p>
+Simon Riggs committed:
+</p>
+
+<p>
+- Allow read only connections during recovery, known as Hot Standby.
+ Enabled by recovery_connections = on (default) and forcing archive
+ recovery using a recovery.conf. Recovery processing now emulates the
+ original transactions as they are replayed, providing full locking
+ and MVCC behaviour for read only queries. Recovery must enter
+ consistent state before connections are allowed, so there is a
+ delay, typically short, before connections succeed. Replay of
+ recovering transactions can conflict and in some cases deadlock with
+ queries during recovery; these result in query cancellation after
+ max_standby_delay seconds have expired. Infrastructure changes have
+ minor effects on normal running, though introduce four new types of
+ WAL record. New test mode "make standbycheck" allows regression
+ tests of static command behaviour on a standby server while in
+ recovery. Typical and extreme dynamic behaviours have been checked
+ via code inspection and manual testing. Few port specific behaviours
+ have been utilised, though primary testing has been on Linux only so
+ far. This commit is the basic patch. Additional changes will follow
+ in this release to enhance some aspects of behaviour, notably
+ improved handling of conflicts, deadlock detection and query
+ cancellation. Changes to VACUUM FULL are also required. Simon
+ Riggs, with significant and lengthy review by Heikki Linnakangas,
+ including streamlined redesign of snapshot creation and two-phase
+ commit. Important contributions from Florian Pflug, Mark Kirkwood,
+ Merlin Moncure, Greg Stark, Gianni Ciolli, Gabriele Bartolini, Hannu
+ Krosing, Robert Haas, Tatsuo Ishii, Hiroyuki Yamada plus support and
+ feedback from many other community members.
+</p>
+
+<h2>Rejected Patches (for now)</h2>
+<p>
+No one was disappointed this week :-)
+</p>
+
+<h2>Pending Patches</h2>
+<p>
+Zoltan Boszormenyi sent in four more revisions of the ECPG patch for
+SQLDA, this time as an ECPG native feature rather than
+compat-mode-only.
+</p>
+
+<p>
+Michael Paquier sent in another revision of the patch to enable
+pgbench to launch shell commands.
+</p>
+
+<p>
+Robert Haas sent in a patch to fix explain output for multi-plan
+statements.
+</p>
+
+<p>
+ITAGAKI Takahiro sent in another revision of the patch which reworks
+VACUUM FULL.
+</p>
+
+<p>
+Kurt Harriman sent in another revision of the patch to remove the gcc
+dependency in definitions of inline functions.
+</p>
+
+<p>
+Zoltan Boszormenyi sent in another revision of the ECPG patch to
+support DESCRIBE [OUTPUT].
+</p>
+
+<p>
+Zoltan Boszormenyi sent in four more revisions of the ECPG patch to
+support out-of-scope cursor support in Informix mode.
+</p>
+
+<p>
+Peter Eisentraut sent in three patches to fix a bug where recovery
+gets stuck when children are not processing SIGQUIT from a previous
+crash. The first defines sigdelset as a macro if it's not already there.
+The second moves the operation of unblocking SIGQUIT out of the
+SIGQUIT handler. The third times out the ereport call in quickdie
+after 60 seconds.
+</p>
+
+<p>
+KaiGai Kohei sent in a patch to clean up existing privilege checks and
+consolidate same.
+</p>
+
+<p>
+KaiGai Kohei sent in a patch to make EnableDisableRule() check the
+ownership of the relation which owns the rule.
+</p>
+
+<p>
+KaiGai Kohei sent in a patch which removes obscure permission checks
+in FindConversion().
+</p>
+
+<p>
+David Wheeler sent in a patch to add hstore_to_json().
+</p>
+
+<p>
+KaiGai Kohei sent in a patch to fix an issue with ALTER TABLE...ALTER
+COLUMN...RENAME TO which happened in situations where the table in
+question is the child, via table inheritance, of multiple tables.
+</p>
+
+<p>
+KaiGai Kohei sent in a patch to remove redundant ownership checks.
+</p>
+
+<p>
+Robert Haas sent in a patch to clean up comments with non-standard
+version names.
+</p>
+
+<p>
+KaiGai Kohei sent in a patch to help pg_dump work with the new large
+object (lo) ACLs.
+</p>
+
+<p>
+James Pye sent in a patch to add some new SPI functions to
+PL/Python3U.
+</p>
+
+<p>
+Martin Pihlak sent in a patch to fix a bug in foreign data wrappers.
+</p>
+
+<p>
+Florian Pflug sent in a WIP patch that allows easier introspection of
+composite types from SQL and PL/pgsql.
+</p>
+
+<p>
+John Naylor sent in another patch to revamp the BKI infrastructure.
+</p>
+
+<p>
+Tom Lane sent in a WIP patch to choose better default names for
+indexes, per discussion.
+
+</p>
+