<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Planet PostgreSQL</title><link>http://planet.postgresql.org</link><description>Planet PostgreSQL</description><lastBuildDate>Fri, 03 Jul 2009 02:01:29 GMT</lastBuildDate><generator>Planet PostgreSQL</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Peter Eisentraut: Where have all the translations gone?</title><link>http://petereisentraut.blogspot.com/2009/07/where-have-all-translations-gone.html</link><description>&lt;a href="http://1.bp.blogspot.com/_dgdplFJMdoQ/SkrgqGL0WGI/AAAAAAAAABs/1NC8XNN2I0c/s1600-h/kbabel-256.png"&gt;&lt;img src="http://1.bp.blogspot.com/_dgdplFJMdoQ/SkrgqGL0WGI/AAAAAAAAABs/1NC8XNN2I0c/s400/kbabel-256.png" alt="" id="BLOGGER_PHOTO_ID_5353338120902563938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you have downloaded PostgreSQL 8.4.0 and are wondering where so many of the translations have gone: The translation team has &lt;a href="http://lists.pgfoundry.org/pipermail/pgtranslation-translators/2009-March/000146.html"&gt;decided&lt;/a&gt; not to ship translations anymore that are not translated at least about 80%. (See the &lt;a href="http://archives.postgresql.org/pgsql-committers/2009-06/msg00360.php"&gt;commit message&lt;/a&gt; for the list of victims.) This is so that incidental users of stale translations are not presented with a confusing and distracting mix of translated and untranslated messages all the time. So right now we are only shipping a full or almost full set of translations into German, Spanish, French, Portuguese, and Turkish.&lt;br /&gt;&lt;br /&gt;To get the translations into other languages back into the release, go to &lt;a href="http://babel.postgresql.org/"&gt;http://babel.postgresql.org/&lt;/a&gt; and start submitting updates.  Updates may be included as early as release 8.4.1 in a few months.&lt;br /&gt;&lt;br /&gt;I hope in particular that we might get the Chinese, Italian, and Russian translations back into shape.&lt;br /&gt;&lt;br /&gt;By the way, if you want to start (or continue) translating, I suggest that you approximately follow this priority order: libpq, psql, pgscripts, pg_dump, initdb, postgres. This or a similar order will make the translations useful to the most users with the least amount of work.&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5541296000399974369-1452563363527277379?l=petereisentraut.blogspot.com" /&gt;&lt;/div&gt;</description><guid isPermaLink="true">tag:blogger.com,1999:blog-5541296000399974369.post-1452563363527277379</guid><pubDate>Thu, 02 Jul 2009 12:39:16 GMT</pubDate></item><item><title>Robert Gravsjö: Finally a real world webservice that enterprises can use to save money</title><link>http://postgresql.blogg.se/2009/july/finally-a-real-world-webservice-that-enterpri.html</link><description>Meet the Meeting Ticker.</description><guid isPermaLink="false">http://postgresql.blogg.se/2009/july/finally-a-real-world-webservice-that-enterpri.html</guid><pubDate>Thu, 02 Jul 2009 11:17:42 GMT</pubDate></item><item><title>Pavel Golub: PostgresDAC meets PostgreSQL 8.4</title><link>http://pgolub.wordpress.com/2009/07/02/postgresdac-meets-postgresql-8-4/</link><description>&lt;div class="snap_preview"&gt;&lt;br /&gt;&lt;h2&gt;Preamble&lt;/h2&gt;
&lt;p&gt;Oh, it was quite long time for 8.4 version of &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; to finally get up on it&amp;#8217;s feet and stand firmly &amp;#8211; 16 months. After a sixteen-month pregnancy, the development team gave birth to a pretty elephant calf. Well done guys!&lt;/p&gt;
&lt;p&gt;At the very same day development team of &lt;a href="http://microolap.com/products/connectivity/postgresdac/"&gt;PostgresDAC&lt;/a&gt; &amp;#8211; the newborn calf&amp;#8217;s friend &lt;img src="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /&gt;  &amp;#8211; decided to release &lt;a href="http://microolap.com/products/connectivity/postgresdac/news/detail.php?ID=1232"&gt;PostgresDAC 2.5.2 Beta&lt;/a&gt; with support for 8.4 server features. And that&amp;#8217;s not just an advertising words.&lt;/p&gt;
&lt;h2&gt;Crux of the matter&lt;/h2&gt;
&lt;p&gt;We&amp;#8217;ve prepared v2.5.2 Beta with a lot of improvements. It was passed our internal tests but this is still beta version.&lt;/p&gt;
&lt;p&gt;The main changes directly related to &lt;a href="http://www.postgresql.org/about/press/features84.htm"&gt;PostgreSQL 8.4 release&lt;/a&gt; would be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.postgresql.org/about/press/features84.html#security"&gt;8.4 SSL Authentication&lt;/a&gt; is implemented&lt;/li&gt;
&lt;li&gt;TPSQLRestore now supports &lt;a href="http://www.postgresql.org/about/press/features84.html#tools"&gt;8.4 parallel restore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8.4 clients libraries are used including dump\restore libs&lt;/li&gt;
&lt;li&gt;TPSQLRestore and TPSQLDump 8.4 support includes (see &lt;a href="http://www.postgresql.org/docs/8.4/static/release-8-4.html"&gt;Release Notes&lt;/a&gt; for details, section E.1.3.8.3):
&lt;ul&gt;
&lt;li&gt;roNoTablespace and doNoTablespace options added&lt;/li&gt;
&lt;li&gt;doIgnoreVersion &amp;amp; roIgnoreVersion options marked as deprecated&lt;/li&gt;
&lt;li&gt;TPSQLDump.LockWaitTimeout property added&lt;/li&gt;
&lt;li&gt;Role properties added&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From others features without a doubt should be mentioned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://microolap.com/products/connectivity/postgresdac/help/TPSQLDataset/Properties/Options.htm"&gt;TPSQLDataset.Options&lt;/a&gt; property added for fine tuning of component behavior&lt;/li&gt;
&lt;li&gt;&lt;a href="http://microolap.com/products/connectivity/postgresdac/help/TPSQLDatabase/Properties/DesignOptions.htm"&gt;TPSQLDatabase.DesignOptions&lt;/a&gt; property added for absolute control over stored properties&lt;/li&gt;
&lt;li&gt;Extended SQL editor for TPSQLQuery added with tables and fields list&lt;/li&gt;
&lt;li&gt;Special TPSQLGuidField class added&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;It is worth noting that there were only two bug reports &amp;#8211; and they were fixed &amp;#8211; in this release and only one was developers&amp;#8217; fault, the other one appeared due to internal changes of Delphi 2009 after Update 3\4.&lt;/p&gt;
&lt;p&gt;May the Force be with you, postgresmen!&lt;/p&gt;
  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pgolub.wordpress.com/596/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pgolub.wordpress.com/596/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pgolub.wordpress.com/596/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pgolub.wordpress.com/596/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pgolub.wordpress.com/596/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pgolub.wordpress.com/596/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pgolub.wordpress.com/596/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pgolub.wordpress.com/596/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pgolub.wordpress.com/596/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pgolub.wordpress.com/596/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pgolub.wordpress.com&amp;blog=5816673&amp;post=596&amp;subd=pgolub&amp;ref=&amp;feed=1" /&gt;&lt;/div&gt;</description><guid isPermaLink="false">http://pgolub.wordpress.com/?p=596</guid><pubDate>Thu, 02 Jul 2009 09:26:56 GMT</pubDate></item><item><title>Robert Gravsjö: "No to SQL"</title><link>http://postgresql.blogg.se/2009/july/no-to-sql.html</link><description>Every time I see something or hear something like this I sigh a little bit. Not only when it's related to SQL but in the world of computer professionals in general. "The right tool for the job" seems to be a hard concept to understand sometimes. I wonder ...</description><guid isPermaLink="false">http://postgresql.blogg.se/2009/july/no-to-sql.html</guid><pubDate>Thu, 02 Jul 2009 08:54:26 GMT</pubDate></item><item><title>David Wheeler: Committed: pgTAP Result Set Assertion Functions</title><link>http://feedproxy.google.com/~r/justatheory/pgsum/~3/xEMuvLCWZtg/results_eq.html</link><description>&lt;div&gt;&lt;p&gt;Regular readers will know that I've been thinking a lot about
&lt;a href="http://justatheory.com/computers/databases/postgresql/comparing-relations.html" title="Thoughts on Testing SQL Result Sets"&gt;testing SQL result sets&lt;/a&gt; and
how to &lt;a href="http://justatheory.com/computers/databases/postgresql/result-testing-function-names.html" title="Need Help Naming Result Set Testing Functions"&gt;how to name result testing functions&lt;/a&gt;,
and various &lt;a href="http://justatheory.com/computers/databases/postgresql/set_testing_update.html" title="pgTAP Set-Testing Update"&gt;implementation issues&lt;/a&gt;. I am very happy
to say that I've now committed the first three such test functions to the
&lt;a href="http://github.com/theory/pgtap/tree/master/" title="Get the pgTAP source on GitHub"&gt;Git repository&lt;/a&gt;. They've been tested
on 8.4 and 8.3. Here's what I came up with.&lt;/p&gt;&lt;p&gt;&lt;a href="http://justatheory.com/computers/databases/postgresql/results_eq.html"&gt;Read More »&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/justatheory/pgsum/~4/xEMuvLCWZtg" height="1" width="1" /&gt;&lt;/div&gt;</description><guid isPermaLink="true">tag:justatheory.com,2009:/computers/databases/postgresql/results_eq</guid><pubDate>Wed, 01 Jul 2009 21:32:00 GMT</pubDate></item><item><title>David Fetter: WITH (so much drama in the CTE)</title><link>http://people.planetpostgresql.org/dfetter/index.php?/archives/22-WITH-so-much-drama-in-the-CTE.html</link><description>By now, you've probably seen that PostgreSQL 8.4 can produce Mandelbrot sets&lt;br /&gt;
like the one below, but what are Common Table Expressions &lt;strong&gt;really&lt;/strong&gt; about?&lt;br /&gt;
 &lt;br /&gt;&lt;a href="http://people.planetpostgresql.org/dfetter/index.php?/archives/22-WITH-so-much-drama-in-the-CTE.html#extended"&gt;Continue reading "WITH (so much drama in the CTE)"&lt;/a&gt;</description><guid isPermaLink="false">http://people.planetpostgresql.org/dfetter/index.php?/archives/22-guid.html</guid><pubDate>Wed, 01 Jul 2009 17:18:57 GMT</pubDate></item><item><title>Leo Hsu and Regina Obe: Window Functions Comparison Between PostgreSQL 8.4, SQL Server 2008, Oracle, IBM DB2</title><link>http://www.postgresonline.com/journal/index.php?/archives/122-Window-Functions-Comparison-Between-PostgreSQL-8.4,-SQL-Server-2008,-Oracle,-IBM-DB2.html</link><description>&lt;p&gt;PostgreSQL 8.4 has ANSI SQL:2003 window functions support.  These are often classified under the umbrella terms of basic Analytical or Online Application Processing (OLAP) functions.
They are used most commonly for producing cumulative sums, moving averages and generally rolling calculations that need to look at a subset of the overall dataset (a window frame of data) often relative to a particular row.
For users who use SQL window constructs extensively, this may have been one reason in the past to not to give PostgreSQL a second look.  While you may not
consider PostgreSQL as a replacement for existing projects because of the cost of migration, recoding and testing, this added new feature is definitely a selling point
for new project consideration.&lt;/p&gt;

&lt;p&gt;If you rely heavily on windowing functions, the things you probably want to know most about the new PostgreSQL 8.4 offering are: &lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;What SQL window functionality is supported?&lt;/li&gt;
	&lt;li&gt;How does PostgreSQL 8.4 offering compare to that of the database you are currently using?&lt;/li&gt;
	&lt;li&gt;Is the subset of functionality you use supported?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
To make this an easier exercise we have curled thru the documents of the other database vendors to distill what the SQL Windowing functionality they provide in their core product.
If you find any mistakes or ambiguities in the below please don't hesitate to let us know and we will gladly amend. &lt;/p&gt;

&lt;p&gt;For those who are not sure what this is and what all the big fuss is about, please read our rich commentary on the &lt;a href="http://www.postgresonline.com/journal/index.php?/categories/54-window-functions" target="_blank"&gt;topic of window functions&lt;/a&gt;. &lt;/p&gt; &lt;br /&gt;&lt;a href="http://www.postgresonline.com/journal/index.php?/archives/122-Window-Functions-Comparison-Between-PostgreSQL-8.4,-SQL-Server-2008,-Oracle,-IBM-DB2.html#extended"&gt;Continue reading "Window Functions Comparison Between PostgreSQL 8.4, SQL Server 2008, Oracle, IBM DB2"&lt;/a&gt;</description><guid isPermaLink="false">http://www.postgresonline.com/journal/index.php?/archives/122-guid.html</guid><pubDate>Wed, 01 Jul 2009 17:00:00 GMT</pubDate></item><item><title>Andreas Scherbaum: PostgreSQL 8.4: Column Permissions</title><link>http://andreas.scherbaum.la/blog/archives/577-PostgreSQL-8.4-Column-Permissions.html</link><description>&lt;div class="serendipity_authorpic"&gt;&lt;img src="http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg" alt="Author" title="Andreas 'ads' Scherbaum" /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;font&gt;Up to &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7073&amp;entry_id=577" title="http://www.postgresql.org/"&gt;&lt;em&gt;PostgreSQL&lt;/em&gt;&lt;/a&gt; 8.3 it was only possible to &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7074&amp;entry_id=577" title="http://www.postgresql.org/docs/8.3/static/sql-grant.html"&gt;grant&lt;/a&gt; (and &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7075&amp;entry_id=577" title="http://www.postgresql.org/docs/8.3/static/sql-revoke.html"&gt;revoke&lt;/a&gt;) permissions on the entire table. If column level permissions were needed, a workaround like a &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7076&amp;entry_id=577" title="http://www.postgresql.org/docs/8.4/static/sql-createview.html"&gt;view&lt;/a&gt; solved &lt;/font&gt;&lt;font&gt;(more or less) &lt;/font&gt;&lt;font&gt;the problem: create the view with the required (allowed) columns, revoke all permissions from the underlaying table, grant permissions to the view.&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font&gt;This - of course - is uneloquent, error prone and does not scale well. For different users requiring access to different columns, a big number of views is needed.&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font&gt;&lt;em&gt;PostgreSQL&lt;/em&gt; 8.4 solves the problem with a shiny new feature: &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7079&amp;entry_id=577" title="http://www.postgresql.org/docs/8.4/static/sql-grant.html"&gt;&lt;strong&gt;column level permissions&lt;/strong&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;br /&gt;&lt;a href="http://andreas.scherbaum.la/blog/archives/577-PostgreSQL-8.4-Column-Permissions.html#extended"&gt;Continue reading "PostgreSQL 8.4: Column Permissions"&lt;/a&gt;</description><guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/577-guid.html</guid><pubDate>Wed, 01 Jul 2009 17:00:00 GMT</pubDate></item><item><title>US PostgreSQL Association: PostgreSQL 8.4 Released!</title><link>https://www.postgresql.us/node/91</link><description>&lt;p&gt;JD wrote:&lt;/p&gt;
&lt;p&gt;For those sleeping in &lt;a href="http://www.postgresql.org/about/news.1108"&gt;PostgreSQL.org just released PostgreSQL 8.4.&lt;/a&gt; This is an exciting release with many new features including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;  Parallel Database Restore, speeding up recovery from backup up to 8 times
&lt;li&gt; Per-Column Permissions, allowing more granular control of sensitive data
&lt;li&gt; Per-database Collation Support, making PostgreSQL more useful in multi-lingual environments
&lt;li&gt; In-place Upgrades through pg_migrator (beta), enabling upgrades from 8.3 to 8.4 without extensive downtime&lt;br /&gt;
&lt;p&gt;&lt;a href="https://www.postgresql.us/node/91"&gt;read more&lt;/a&gt;&lt;/p&gt;</description><guid isPermaLink="false">https://www.postgresql.us/91 at https://www.postgresql.us</guid><pubDate>Wed, 01 Jul 2009 16:35:50 GMT</pubDate></item><item><title>Robert Gravsjö: PostgreSQL 8.4 released</title><link>http://postgresql.blogg.se/2009/july/postgresql-84-released.html</link><description>Spread the word, PostgreSQL 8.4 is out!</description><guid isPermaLink="false">http://postgresql.blogg.se/2009/july/postgresql-84-released.html</guid><pubDate>Wed, 01 Jul 2009 16:30:46 GMT</pubDate></item><item><title>Josh Berkus: pg_stat_statements in 8.4</title><link>http://it.toolbox.com/blogs/database-soup/pg_stat_statements-in-84-32648?rss=1</link><description>Now that PostgreSQL 8.4 is out, I thought I'd write a little about my favorite 8.4 feature.  As Mister Performance Whack-a-Mole, what makes me happy about 8.4 is the ability to whack moles faster ... which is why I'm very fond of pg_stat_statements.</description><guid isPermaLink="false">http://rss.ittoolbox.com/rss/32648@http://it.toolbox.com/blogs/database-soup</guid><pubDate>Wed, 01 Jul 2009 12:52:42 GMT</pubDate></item><item><title>Leo Hsu and Regina Obe: Managing disk space using table spaces</title><link>http://www.postgresonline.com/journal/index.php?/archives/123-Managing-disk-space-using-table-spaces.html</link><description>&lt;p&gt;We have ccovered this briefly before, but its an important enough concept to cover again in more detail.&lt;/p&gt;
&lt;h5&gt;Problem: You are running out of disk space on the drive you keep PostgreSQL data on&lt;/h5&gt;
&lt;b&gt;Solution:&lt;/b&gt; &lt;br /&gt;
&lt;p&gt;Create a new tablespace on a separate drive and move existing tables to it, or create a new tablespace and use for future tables.&lt;/p&gt;

&lt;h5&gt;What is a tablespace and how to create a tablespace&lt;/h5&gt;
&lt;p&gt;A tablespace in PostgreSQL is similar to a tablespace in Oracle and a filegroup in SQL Server.  It segments a piece of physical disk space
for use by the PostgreSQL process for holding data. Below are steps to creating a new tablespace.  Tablespaces have existed since PostgreSQL 8.0. &lt;/p&gt;

&lt;p&gt;More about tablespaces in PostgreSQL is outlined in
the manual &lt;a href="http://www.postgresql.org/docs/8.3/interactive/sql-createtablespace.html" target="_blank"&gt;PostgreSQL 8.3 tablespaces&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While it is possible to create a table index on a different tablespace from the table, we won't be covering that.&lt;/p&gt;
 &lt;br /&gt;&lt;a href="http://www.postgresonline.com/journal/index.php?/archives/123-Managing-disk-space-using-table-spaces.html#extended"&gt;Continue reading "Managing disk space using table spaces"&lt;/a&gt;</description><guid isPermaLink="false">http://www.postgresonline.com/journal/index.php?/archives/123-guid.html</guid><pubDate>Tue, 30 Jun 2009 04:00:00 GMT</pubDate></item><item><title>Andrew Dunstan: Parallel pg_restore for PostgreSQL 8.4</title><link>http://people.planetpostgresql.org/andrew/index.php?/archives/27-Parallel-pg_restore-for-PostgreSQL-8.4.html</link><description>I try to complete at least one significant feature item per PostgreSQL release. This time the feature is making pg_restore run in parallel. This is quite important for many users, particularly some large enterprise users.&lt;br /&gt;
&lt;br /&gt;
It's important that people understand what this will do and what it won't do. pg_restores runs a number of steps. In conventional mode it simply runs them all in a single connection to the database, one after the other. In parallel mode it first runs all the quick and easy steps, essentially those that don't involve any data access, such as table and function creation, in a single connection, just like conventional mode. Then it runs the remaining steps each in its own connection. The steps are the same, and there is no parallelism within a given step. For example, a single COPY to a table is not parallelised. Rather, we run it in parallel with other data intensive steps. &lt;br /&gt;
&lt;br /&gt;
The maximum amount of parellelism is controlled by the user. This will involve some experimentation to get to the sweet spot for your setup. A good place to start is the number of physical processors you have available. The idea here is to improve the situation where the CPU is the limiting factor, and allow you to drive the restoration rate up to where IO is in fact the limiting factor. With very high end hardware we believe that you can drive the parallelism quite high. &lt;br /&gt;
&lt;br /&gt;
Like many performance features, this one might well require several releases to tweak it for optimal performance gain. The program works by keeping a pool of slots to be used for the steps that are run in parallel. One possible area for improvement is in the algorithm that selects the item to be used for a slot as it it becomes available. Currently we keep a queue of items that have no remaining unrestored dependencies. An item gets put on the queue as soon as all the items it depends on have been restored. This is likely to be a fairly good approximation of an optimal algorithm, but there might well be a way of tweaking it. Another possible area of optimsation would be to take some notice of the tablespace that each item affects, and try to balance these, so we use as many IO channels as possible.&lt;br /&gt;
&lt;br /&gt;
What is important is that we have now got the basic framework of parallel restore, so that some researchers can easily experiment with various tweaks to improve the performance.&lt;br /&gt;
&lt;br /&gt;
pg_restore is going to be with us for quiter a long time. Even if we manage to get pg_upgrade working pretty well, that will take quite a bit of time, and there is currently no guarantee that it will for for every release. So I expect pg_restore to be the most common method of upgrading for quite some time, making it run as fast as possible is thus still a significant requirement.&lt;br /&gt;
&lt;br /&gt;
I'm proud to have been able to contribute this feature to Postgres, and look forward to other people improving it further as time goes by.</description><guid isPermaLink="false">http://people.planetpostgresql.org/andrew/index.php?/archives/27-guid.html</guid><pubDate>Sun, 28 Jun 2009 12:24:52 GMT</pubDate></item><item><title>PostgreSQL Weekly News: PostgreSQL Weekly News June 28th 2009</title><link>http://www.postgresql.org/community/weeklynews/pwn20090628</link><description>8.4.0 will be out soon.  Meanwhile, keep testing!
&lt;a href="http://www.postgresql.org/developer/beta"&gt;http://www.postgresql.org/developer/beta&lt;/a&gt;</description><guid isPermaLink="true">http://www.postgresql.org/community/weeklynews/pwn20090628</guid><pubDate>Sun, 28 Jun 2009 08:00:00 GMT</pubDate></item><item><title>Josh Berkus: Anyone Have a Timer for Lightning Talks?</title><link>http://it.toolbox.com/blogs/database-soup/anyone-have-a-timer-for-lightning-talks-32560?rss=1</link><description>I run a lot of lightning talks, and one tool I haven't been able to find a satisfactory solution for is the timer for the talks ...</description><guid isPermaLink="false">http://rss.ittoolbox.com/rss/32560@http://it.toolbox.com/blogs/database-soup</guid><pubDate>Sat, 27 Jun 2009 17:31:36 GMT</pubDate></item><item><title>Andreas Scherbaum: Call for Papers für den PostgreSQL-Devroom auf der FrOSCon 2009</title><link>http://andreas.scherbaum.la/blog/archives/573-Call-for-Papers-fuer-den-PostgreSQL-Devroom-auf-der-FrOSCon-2009.html</link><description>&lt;div class="serendipity_authorpic"&gt;&lt;img src="http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg" alt="Author" title="Andreas 'ads' Scherbaum" /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;p&gt;The &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7045&amp;entry_id=573" title="http://www.postgresql.org/"&gt;PostgreSQL Project&lt;/a&gt; will have a dev-room at &lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7046&amp;entry_id=573" title="http://www.froscon.org/"&gt;FrOSCon&lt;/a&gt; on sunday, august 23, 2009. Talks wanted!&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;The theme should be PostgreSQL-related, please submit the talk(s) by using the FrOSCon Pentabarf:&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;&lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7047&amp;entry_id=573" title="https://pentabarf.froscon.org/submission/froscon2009/"&gt;https://pentabarf.froscon.org/submission/froscon2009/&lt;/a&gt;&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Procedure:&lt;/p&gt; &lt;br /&gt;
&lt;ol&gt; &lt;br /&gt;
&lt;li&gt;Create account (if not yet done) and follow the confirmation link in the email&lt;br /&gt;&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Login in Pentabarf&lt;br /&gt;&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Create a new event&lt;br /&gt;&lt;/li&gt; &lt;br /&gt;
&lt;li&gt;Choose track &amp;quot;PostgreSQL&amp;quot;&lt;br /&gt;&lt;/li&gt; &lt;br /&gt;
&lt;/ol&gt; &lt;br /&gt;
&lt;p&gt;All submitters will receive a confirmation timely, if the talk is accepted. Who wants to submit a talk about databases in general - or a talk about another database - may choose the &amp;quot;&lt;a target="_blank" href="http://andreas.scherbaum.la/blog/exit.php?url_id=7048&amp;entry_id=573" title="http://opensqlcamp.org/"&gt;OpenSQL Camp&lt;/a&gt;&amp;quot; track.&lt;br /&gt;&lt;/p&gt;</description><guid isPermaLink="false">http://andreas.scherbaum.la/blog/archives/573-guid.html</guid><pubDate>Fri, 26 Jun 2009 17:27:59 GMT</pubDate></item><item><title>Theo Schlossnagle: Web: you can now not suck.</title><link>http://lethargy.org/~jesus/archives/156-Web-you-can-now-not-suck..html</link><description>&lt;img src="http://images.omniti.net/lethargy.org/~jesus/uploads/velocity2009_160x600.gif" alt="" /&gt;
&lt;p&gt;In perhaps a new trend, I&amp;#8217;m blogging from 39011 feet (or so says the seatback in front of me).  I&amp;#8217;m traveling back home to the east coast from San Jose, CA where I attended (and spoke) at this year&amp;#8217;s &lt;a href="http://en.oreilly.com/velocity2009/"&gt;O&amp;#8217;Reilly Velocity Conference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I participated (and blogged) about the Velocity Summit in which I&amp;#8217;ve participated for the past two years.  The summit is the unconference preceding the real conference that help the organizers digest current hot topics and better define the conference track for the actual conference.  The summit itself is filled with enough brain power to warp space-time, so I drop everything to go to that.&lt;/p&gt;

&lt;p&gt;Ironically, despite being a well respected authority in web site (and general internet) scalability and performance, my talk proposals for Velocity 2008 were not accepted &amp;#8212; I clearly need to write better proposals.  This year, I managed to work my way into the workshop track on Monday.  Despite having a bad headache and feeling "off" the day before, I managed to get my act together and put on an A-game for my workshop.  For those of you interested, here is &lt;a href="http://www.slideshare.net/postwait/scalable-internet-architecture"&gt;my scalable09 slide stack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I thought I&amp;#8217;d take a moment to talk about what I liked about the conference and what I think could use some improvement.  I realize this is a down economy and that might be a legitimate justification for some the actions that resulted in some of my disappointment.&lt;/p&gt;

&lt;p&gt;First, the negative.  I usually start with positive and end with negative because I&amp;#8217;m a pessimist.  However, all in all the conference was awesome, so I thought I&amp;#8217;d get my short list of gripes out of the way early.&lt;/p&gt;

&lt;p&gt;O&amp;#8217;Reilly is infamous for throwing good conferences for geeks.  In my opinion, the field of web operations has been so severely neglected and applies so broadly to the world today that this conference needs to be for everyone.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the next conference, I&amp;#8217;d love to see a technical business track.  Several of the talks I went to spoke to the dollars and cents lost or earned by paying the right amount of attention to web site performance and better operational paradigms.  I thought a lot of the topics would be very useful to business managers.&lt;/li&gt;
&lt;li&gt;The first day was not video taped and the second and third day were only half video taped.  Come on guys, ante up.  The attendance fee was substantial, you can afford to give your attendees the value of watching what they had to choose not to attend.  I like the option when I go to a conference to choose a session that seems interesting so that I have the opportunity to participate, but often times I find that another session was top notch and I &lt;em&gt;expect&lt;/em&gt; to be able to later review a recording of that.&lt;/li&gt;
&lt;li&gt;Lastly, and this is the most significant.  While I thought the conference was extremely well executed (excellent job Jesse, Steve, all your support, and most definitely O&amp;#8217;Reilly), it lacked sufficient PR and marketing outreach.  I talked with several journalists (as a part of my normal day job) while I was at that conference and &lt;em&gt;not one&lt;/em&gt; of them was aware of Velocity &amp;#8212; simply embarrassing.  Given that the Structure conference was in town that same week, O&amp;#8217;Reilly should have invested more in their PR and marketing outreach.  It would have resulted in a substantially increased audience and a better venue for teaching the world to run a faster web.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that I&amp;#8217;ve griped and aired my disappointment.  I can focus on the gobs of awesomeness that was Velocity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The conference was put on quite well from an operational perspective.  Things started on time, A/V problems were non-existent.  Like an idiot, I managed to lose my MacBook Air power adapter and the A/V crew managed to recover it for me.  Conferences just plain suck when they have technical difficulties; this one had none.&lt;/li&gt;
&lt;li&gt;The two tracks at the conference were extremely well articulated and while I wanted to be in both all the time (as OmniTI is a full-stack company, we care about both equally) it was an excellent split.&lt;/li&gt;
&lt;li&gt;One track was performance which focused intently on user-perceived performance.  This was largely front-end (HTML,CSS,JS,etc.) but also had a healthy amount of deep stack performance discussion as well including the often ignored, but much deserving networking aspect of delivering the web to users.&lt;/li&gt;
&lt;li&gt;The second track was operations and I feared it would be bunch of blind &amp;#8220;The Cloud Solves All Our Problems&amp;#8221; sessions.  Much to the contrary, it focused heavily on operational strategy and and what it takes to execute tactically.  There was a bit of cloud here and there (okay everywhere), but there was very little blind and ignorant mentality that launching in the cloud was a solution to a hard scaling problem.&lt;/li&gt;
&lt;li&gt;I had the opportunity to see a lot of old faces, but spent most of my time meeting new ones.  The opportunity to learn more about other people&amp;#8217;s problems is what completes me as an engineer.  The people I met at this conference were both honest and open and provided a fabulous and refreshing perspective on what today&amp;#8217;s performance and scalability problems really are.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
In my workshop, I spent about 20% of the time discussing the philosophy of being a good engineer and 80% discussing practice (non-cookbook) with examples and advice.  The basic message is that systems are complex and you must think of all the parts holistically or its a recipe for disaster &amp;#8212; or failure.
&lt;/p&gt;

&lt;p&gt;
Two of my favorite talks were Nicole Sullivan's &amp;#8220;The Fast and the Fabulous: 9 ways engineering and design come together to make your site slow&amp;#8221; and &amp;#8220; 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr&amp;#8221; by John Allspaw and Paul Hammond.  while Nicole's presentation, like mine, was not recorded, the other was and if you want to break down the divide between operations and development, it is a &lt;a href="http://velocityconference.blip.tv/file/2284377/"&gt;must see.&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;All in all, I would encourage everyone reading this to attend next year's Velocity conference.  I am certain you will walk away with knowledge that is both valuable and applicable.&lt;/p&gt;</description><guid isPermaLink="false">http://lethargy.org/~jesus/archives/156-guid.html</guid><pubDate>Fri, 26 Jun 2009 03:33:33 GMT</pubDate></item><item><title>Kenny Gorman: pg_reorg 1.0.4</title><link>http://www.kennygorman.com/wordpress/?p=434</link><description>&lt;p&gt;At &lt;a href="http://www.hi5.com"&gt;Hi5&lt;/a&gt;, we currently use pg_reorg1.0.3 in order to organize data in a clustered fashion. &lt;a href="http://www.kennygorman.com/wordpress/?p=334"&gt; I posted previously&lt;/a&gt; about the strategy.  Our version is slightly modified, the modifications I made to the C code essentially allow pg_reorg to spin/wait for locks on the objects to be released before proceeding.&lt;/p&gt;
&lt;p&gt;The good news is the folks at &lt;a href="http://www.ntt.co.jp/RD/OFIS/active/2006pdfe/rd/index.html"&gt;NTT&lt;/a&gt; have incorporated a similar change in &lt;a href="http://pgfoundry.org/projects/reorg/"&gt;pg_reorg 1.0.4&lt;/a&gt;.  This is a fantastic improvement, and frankly implemented in a cleaner way than my changes.&lt;/p&gt;
&lt;p&gt;The crux of the issue is the situation where a database is being auto-vacuumed, you can&amp;#8217;t be guaranteed that pg_reorg and the vacuum will not collide.  In theory you should not need to vacuum a table which you are pg_reorg&amp;#8217;ing because that is the point of a pg_reorg, it&amp;#8217;s essentially a vacuum full w/ extra features because the table is being rebuilt from scratch.  However in an environment where auto-vacuum is being utilized to keep tables vacuumed, both will need to co-exist.&lt;/p&gt;
&lt;p&gt;The change is simple, use the NOWAIT option of lock table to fail if the lock can not be obtained.  This is wrapped in a loop until the lock is granted.  The effect is pg_reorg patiently sits and waits while your vacuums complete and then it can finish it&amp;#8217;s work.   The downside is if any of these operations run for too long, then the journal table may grow very large.  So there should be some monitoring wrapped around the code if it&amp;#8217;s intended to run in the background.  For the future we need a backoff algorithm as well as perhaps a limit to the number of spin/sleep cycles, but hey this is excellent progress.&lt;/p&gt;
&lt;p&gt;This tool is essential in my humble opinion for everyone running PostgreSQL in a high transaction/high availability environment.  By the way, pg_reorg works seamlessly with &lt;a href="http://www.slony.info/"&gt;Slony-I&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The code addition does the following:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="c"&gt;&lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;;;&lt;span&gt;&amp;#41;&lt;/span&gt;                        
        &lt;span&gt;&amp;#123;&lt;/span&gt;
                command&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;BEGIN ISOLATION LEVEL READ COMMITTED&amp;quot;&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
                res &lt;span&gt;=&lt;/span&gt; execute_nothrow&lt;span&gt;&amp;#40;&lt;/span&gt;table&lt;span&gt;-&lt;/span&gt;&amp;gt;lock_table, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;; 
                &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;PQresultStatus&lt;span&gt;&amp;#40;&lt;/span&gt;res&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; PGRES_COMMAND_OK&lt;span&gt;&amp;#41;&lt;/span&gt;
                &lt;span&gt;&amp;#123;&lt;/span&gt;
                        PQclear&lt;span&gt;&amp;#40;&lt;/span&gt;res&lt;span&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span&gt;break&lt;/span&gt;;
                &lt;span&gt;&amp;#125;&lt;/span&gt;
                &lt;span&gt;else&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;sqlstate_equals&lt;span&gt;&amp;#40;&lt;/span&gt;res, SQLSTATE_LOCK_NOT_AVAILABLE&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
                &lt;span&gt;&amp;#123;&lt;/span&gt;
                        &lt;span&gt;/* retry if lock conflicted */&lt;/span&gt; 
                        PQclear&lt;span&gt;&amp;#40;&lt;/span&gt;res&lt;span&gt;&amp;#41;&lt;/span&gt;;
                        command&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;ROLLBACK&amp;quot;&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
                        sleep&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span&gt;continue&lt;/span&gt;;
                &lt;span&gt;&amp;#125;&lt;/span&gt;
                &lt;span&gt;else&lt;/span&gt;
                &lt;span&gt;&amp;#123;&lt;/span&gt;
                        &lt;span&gt;/* exit otherwise */&lt;/span&gt;
                        &lt;span&gt;printf&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;%s&amp;quot;&lt;/span&gt;, PQerrorMessage&lt;span&gt;&amp;#40;&lt;/span&gt;connection&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;
                        PQclear&lt;span&gt;&amp;#40;&lt;/span&gt;res&lt;span&gt;&amp;#41;&lt;/span&gt;;
                        exit&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;        
                &lt;span&gt;&amp;#125;&lt;/span&gt;
        &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The below is a snip of the strace on pg_reorg while it&amp;#8217;s waiting for the lock:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="c"&gt;rt_sigaction&lt;span&gt;&amp;#40;&lt;/span&gt;SIGPIPE, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_IGN&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_DFL&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
sendto&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;, &lt;span&gt;&amp;quot;P&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;008&lt;span&gt;\0&lt;/span&gt;SELECT reorg.reorg_apply($&amp;quot;&lt;/span&gt;..., &lt;span&gt;529&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;529&lt;/span&gt;
rt_sigaction&lt;span&gt;&amp;#40;&lt;/span&gt;SIGPIPE, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_DFL&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_IGN&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
poll&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;fd&lt;span&gt;=&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;, events&lt;span&gt;=&lt;/span&gt;POLLIN|POLLERR, revents&lt;span&gt;=&lt;/span&gt;POLLIN&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;, &lt;span&gt;1&lt;/span&gt;, &lt;span&gt;-1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;1&lt;/span&gt;
recvfrom&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;, &lt;span&gt;&amp;quot;1&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;042&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\4&lt;/span&gt;T&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;$&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\1&lt;/span&gt;reorg_apply&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&amp;quot;&lt;/span&gt;..., &lt;span&gt;16384&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;77&lt;/span&gt;
rt_sigaction&lt;span&gt;&amp;#40;&lt;/span&gt;SIGPIPE, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_IGN&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_DFL&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
sendto&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;, &lt;span&gt;&amp;quot;P&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\1&lt;/span&gt;77&lt;span&gt;\0&lt;/span&gt;SELECT 1 FROM pg_locks WHE&amp;quot;&lt;/span&gt;..., &lt;span&gt;178&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;178&lt;/span&gt;
rt_sigaction&lt;span&gt;&amp;#40;&lt;/span&gt;SIGPIPE, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_DFL&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_IGN&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
poll&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;fd&lt;span&gt;=&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;, events&lt;span&gt;=&lt;/span&gt;POLLIN|POLLERR, revents&lt;span&gt;=&lt;/span&gt;POLLIN&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;, &lt;span&gt;1&lt;/span&gt;, &lt;span&gt;-1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;1&lt;/span&gt;
recvfrom&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;, &lt;span&gt;&amp;quot;1&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;042&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\4&lt;/span&gt;T&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;!&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\1&lt;/span&gt;?column?&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&amp;quot;&lt;/span&gt;..., &lt;span&gt;16384&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;74&lt;/span&gt;
rt_sigprocmask&lt;span&gt;&amp;#40;&lt;/span&gt;SIG_BLOCK, &lt;span&gt;&amp;#91;&lt;/span&gt;CHLD&lt;span&gt;&amp;#93;&lt;/span&gt;, &lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
rt_sigaction&lt;span&gt;&amp;#40;&lt;/span&gt;SIGCHLD, &lt;span&gt;NULL&lt;/span&gt;, &lt;span&gt;&amp;#123;&lt;/span&gt;SIG_DFL&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
rt_sigprocmask&lt;span&gt;&amp;#40;&lt;/span&gt;SIG_SETMASK, &lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;, &lt;span&gt;NULL&lt;/span&gt;, &lt;span&gt;8&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;
nanosleep&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;, &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;, &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Your Postgresql log file will show the following:&lt;/p&gt;

&lt;div class="wp_syntax"&gt;&lt;div class="code"&gt;&lt;pre class="sql"&gt;Jun &lt;span&gt;25&lt;/span&gt; &lt;span&gt;17&lt;/span&gt;:&lt;span&gt;09&lt;/span&gt;:&lt;span&gt;33&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;dbname&lt;span&gt;&amp;gt;&lt;/span&gt; postgres&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;7825&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;: &lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;-2&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt; &lt;span&gt;2009&lt;/span&gt;&lt;span&gt;-06&lt;/span&gt;&lt;span&gt;-25&lt;/span&gt; &lt;span&gt;17&lt;/span&gt;:&lt;span&gt;09&lt;/span&gt;:&lt;span&gt;33&lt;/span&gt; PDTSTATEMENT:  &lt;span&gt;LOCK&lt;/span&gt; &lt;span&gt;TABLE&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;tablename&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;IN&lt;/span&gt; ACCESS EXCLUSIVE MODE NOWAIT
Jun &lt;span&gt;25&lt;/span&gt; &lt;span&gt;17&lt;/span&gt;:&lt;span&gt;09&lt;/span&gt;:&lt;span&gt;34&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;dbname&lt;span&gt;&amp;gt;&lt;/span&gt; postgres&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;7825&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;: &lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt; &lt;span&gt;2009&lt;/span&gt;&lt;span&gt;-06&lt;/span&gt;&lt;span&gt;-25&lt;/span&gt; &lt;span&gt;17&lt;/span&gt;:&lt;span&gt;09&lt;/span&gt;:&lt;span&gt;34&lt;/span&gt; PDTERROR:  could &lt;span&gt;NOT&lt;/span&gt; obtain &lt;span&gt;LOCK&lt;/span&gt; &lt;span&gt;ON&lt;/span&gt; relation &lt;span&gt;&amp;quot;&amp;lt;tablename&amp;gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><guid isPermaLink="true">http://www.kennygorman.com/wordpress/?p=434</guid><pubDate>Fri, 26 Jun 2009 00:28:04 GMT</pubDate></item><item><title>Josh Berkus: Normalization, Performance, and Virtual Private Databases</title><link>http://it.toolbox.com/blogs/database-soup/normalization-performance-and-virtual-private-databases-32525?rss=1</link><description>Whenever I encounter a pervasive query performance problem, one of the first things I ask is, "is this database really normalized?"  Usually the answer is no ...</description><guid isPermaLink="false">http://rss.ittoolbox.com/rss/32525@http://it.toolbox.com/blogs/database-soup</guid><pubDate>Thu, 25 Jun 2009 19:01:22 GMT</pubDate></item><item><title>Hubert Lubaczewski: explain.depesz.com – update</title><link>http://www.depesz.com/index.php/2009/06/25/explain-depesz-com-update/</link><description>I just updated explain.depesz.com with bugfix, which changes the way Bitmap Index Scan and Bitmap Heap Scan are displayed. Apparently index and table names were not shown previously.
Thanks go to Viktor Rosenfeld for spotting and reporting the bug.</description><guid isPermaLink="false">http://www.depesz.com/?p=1437</guid><pubDate>Thu, 25 Jun 2009 13:04:44 GMT</pubDate></item><item><title>Joshua Drake: PostgreSQL Conference West 2009 Call for Papers</title><link>http://www.commandprompt.com/blogs/joshua_drake/2009/06/postgresql_conference_west_2009_call_for_papers/</link><description>&lt;strong&gt;PostgreSQL Conference West 2009 Call for Papers&lt;/strong&gt;

June 24th, 2009, the PostgreSQL Conference U.S. team is pleased to announce the West 2009 venue and call for papers. This year the premiere West Coast PostgreSQL Conference will be leaving its roots at Portland State University and moving north to sunny Seattle, Washington.

The event this year is being held at Seattle Central Community College from October 16th through 18th. The move to Seattle opens up a larger metropolitan area for continuing to expose databases users, developers, and administrators to the World's Most Advanced Open Source Database. Following previously successful West Coast conferences, we will be hosting a series of 3-4 hour tutorials, 90 minute mini-tutorials, and 45 minute talks.

This year we will be continuing our trend of covering the entire PostgreSQL ecosystem. We would like to see talks and tutorials on the following topics:

&lt;strong&gt;General PostgreSQL:&lt;/strong&gt;
&lt;ul&gt;&lt;li&gt;Administration
    &lt;li&gt;Performance
    &lt;li&gt;High Availability
    &lt;li&gt;Migration
    &lt;li&gt;GIS
    &lt;li&gt;Integration
    &lt;li&gt;Solutions and White Papers
&lt;/ul&gt;&lt;strong&gt;The Stack:&lt;/strong&gt;
&lt;ul&gt;&lt;li&gt;Python/Django/Pylons/TurboGears/Custom
    &lt;li&gt;Perl5/Catalyst/Bricolage
    &lt;li&gt;Potato
    &lt;li&gt;Ruby/Rails
    &lt;li&gt;Java (PLJava would be great)/Groovy/Grails
    &lt;li&gt;Operating System optimization (Linux/FBSD/Solaris/Windows)
    &lt;li&gt;Solutions and White Papers
&lt;/ul&gt;If you are using PostgreSQL as your platform, you need to be presenting at this conference!

&lt;strong&gt;&lt;div align="center"&gt;&lt;a href="http://www.postgresqlconference.org/talksubmission"&gt;Submit your talk&lt;/a&gt; (You must be have an account on the site)&lt;/div&gt;&lt;/strong&gt;

***
The PostgreSQL Conference U.S. series is an autonomous Educational Project used to educate all comers on the use of The World's Most Advanced Open Source Database. Proceeds from the event are donated directly to United States PostgreSQL; the 501c3
non-profit for PostgreSQL education and advocacy in the United States.</description><guid isPermaLink="true">http://www.commandprompt.com/blogs/joshua_drake/2009/06/postgresql_conference_west_2009_call_for_papers/</guid><pubDate>Wed, 24 Jun 2009 19:00:00 GMT</pubDate></item><item><title>Josh Berkus: OSCON for Postgres Geeks</title><link>http://it.toolbox.com/blogs/database-soup/oscon-for-postgres-geeks-32495?rss=1</link><description>In addition to the pgDay San Jose, there are several talks at OSCON which will be of interest to PostgreSQL community ...</description><guid isPermaLink="false">http://rss.ittoolbox.com/rss/32495@http://it.toolbox.com/blogs/database-soup</guid><pubDate>Wed, 24 Jun 2009 18:13:32 GMT</pubDate></item><item><title>US PostgreSQL Association: PostgreSQL at SELF</title><link>https://www.postgresql.us/node/89</link><description>&lt;p&gt;Michael Brewer wrote:&lt;/p&gt;
&lt;p&gt; On Saturday, June 13th, I wound up manning the PostgreSQL booth at &lt;a href="http://www.southeastlinuxfest.org/"&gt;SouthEast LinuxFest&lt;/a&gt;, in Clemson, South Carolina.  This free conference drew a larger crowd than I'd expected;  organizers told me there had been some 450 registrants by the day before, and they were expecting a final total of over 500 (with walk-ups).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.postgresql.us/node/89"&gt;read more&lt;/a&gt;&lt;/p&gt;</description><guid isPermaLink="false">https://www.postgresql.us/89 at https://www.postgresql.us</guid><pubDate>Tue, 23 Jun 2009 14:22:55 GMT</pubDate></item><item><title>Hubert Lubaczewski: Tips N’ Tricks - Generating readable reports with plain SQL</title><link>http://www.depesz.com/index.php/2009/06/23/tips-n%e2%80%99-tricks-generating-readable-reports-with-plain-sql/</link><description>Let&amp;#8217;s say you imported some data, but it contains duplicates. You will have to handle them in some way, but to make sensible choice on how to handle it, you need more information.
So, let&amp;#8217;s start. We have table:
# \d users
                [...]</description><guid isPermaLink="false">http://www.depesz.com/?p=1434</guid><pubDate>Tue, 23 Jun 2009 11:51:43 GMT</pubDate></item><item><title>Dimitri Fontaine: prefix extension reaches 1.0 (rc1)</title><link>http://blog.tapoueh.org/blog.dim.html#%20prefix%20extension%20reaches%201%2E0%20</link><description>&lt;p&gt;&lt;a name="20090623-10:53" id="20090623-10:53"&gt;&lt;/a&gt;
&lt;a name="%20prefix%20extension%20reaches%201%2E0%20" id="%20prefix%20extension%20reaches%201%2E0%20"&gt;&lt;/a&gt;
At long last, after millions and millions of queries just here at work and
some more in other places, the &lt;a href="http://blog.tapoueh.org/prefix.html"&gt;prefix&lt;/a&gt; project is reaching &lt;code&gt;1.0&lt;/code&gt; milestone. The
release candidate is getting uploaded into debian at the moment of this
writing, and available at the following place: &lt;a href="http://prefix.projects.postgresql.org/prefix-1.0~rc1.tar.gz"&gt;prefix-1.0~rc1.tar.gz&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have any use for it (as some &lt;em&gt;VoIP&lt;/em&gt; companies have already), please
consider testing it, in order for me to release a shiny &lt;code&gt;1.0&lt;/code&gt; next week! :)&lt;/p&gt;

&lt;p&gt;Recent changes include getting rid of those square brackets output when it's
not neccesary, fixing btree operators, adding support for more operators in
the &lt;code&gt;GiST&lt;/code&gt; support code (now supported: &lt;code&gt;@&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;@&lt;/code&gt;, &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;). Enjoy!&lt;/p&gt;</description><guid isPermaLink="false">http://blog.tapoueh.org/blog.dim.html#%20prefix%20extension%20reaches%201%2E0%20</guid><pubDate>Tue, 23 Jun 2009 08:53:00 GMT</pubDate></item><item><title>David Wheeler: pgTAP Set-Testing Update</title><link>http://feedproxy.google.com/~r/justatheory/pgsum/~3/01yKw9LbnIo/set_testing_update.html</link><description>&lt;div&gt;&lt;p&gt;I've been thinking more
about &lt;a href="http://justatheory.com/computers/databases/postgresql/comparing-relations.html" title="Thoughts on Testing SQL Result Sets"&gt;testing SQL result sets&lt;/a&gt; and
how to &lt;a href="http://justatheory.com/computers/databases/postgresql/result-testing-function-names.html" title="Need Help Naming Result Set Testing Functions"&gt;name functions&lt;/a&gt; that
do such testing, and I've started to come to some conclusions. Some of the
constraints I'm looking at:&lt;/p&gt;&lt;p&gt;&lt;a href="http://justatheory.com/computers/databases/postgresql/set_testing_update.html"&gt;Read More »&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds2.feedburner.com/~r/justatheory/pgsum/~4/01yKw9LbnIo" height="1" width="1" /&gt;&lt;/div&gt;</description><guid isPermaLink="true">tag:justatheory.com,2009:/computers/databases/postgresql/set_testing_update</guid><pubDate>Mon, 22 Jun 2009 17:34:00 GMT</pubDate></item><item><title>Baron Schwartz: Recap of Southeast Linux Fest 2009</title><link>http://www.xaprb.com/blog/2009/06/21/recap-of-southeast-linux-fest-2009/</link><description>&lt;p&gt;Last weekend, my brother and I attended &lt;a href="http://www.southeastlinuxfest.org/"&gt;SELF 2009&lt;/a&gt;.  A few thoughts on it:&lt;/p&gt;

&lt;p&gt;The mixture of sessions was interesting.  There were some really good ones.  I think the best session I attended was an OpenSolaris/NetBeans/Glassfish/Virtualbox/ZFS session, given by a Sun employee.  He was an excellent presenter, and really showed off the strengths of the technologies in a nice way.  He started up enough VMs to make his OpenSolaris laptop chew into swap, and I thought it was fun to see how it dealt with that.  I&amp;#8217;ve heard Solaris and OpenSolaris do a lot better at avoiding and managing swapping than GNU/Linux, but I couldn&amp;#8217;t make any opinion from watching.  I did think it was odd to have this session at a &amp;#8220;Linux&amp;#8221; (yes, they left off the GNU) conference.  But I thought the session was a good addition to the conference.  In other sessions, and in the hallways and expo, there was a lot more slant towards open-source software and gadgetry in general than there was towards GNU/Linux.  The sessions that were about Linux or GNU/Linux were top-heavy towards topics like educational initiatives.&lt;/p&gt;

&lt;p&gt;The Free Software Foundation had a booth in the expo hall.  It was funny that they didn&amp;#8217;t boycott the event, because I know RMS won&amp;#8217;t speak at so-called &amp;#8220;Linux User Groups&amp;#8221; and insists they be called &amp;#8220;GNU/Linux User Groups.&amp;#8221;  I guess the FSF is not unified behind that banner.  Regardless, I used the opportunity to renew my membership perpetually.  I&amp;#8217;m so lazy that I need something like this to stay involved!&lt;/p&gt;

&lt;p&gt;The expo hall was dominated by Red Hat, Fedora, and SUSE; PostgreSQL was there, but not MySQL.  There was a good variety and number of vendors.  It was great to see the healthy support of the event, which was free, by the way.&lt;/p&gt;

&lt;p&gt;Clemson, SC is not easy to get to, and while the Clemson campus was attractive and functioned fine, it&amp;#8217;s nothing you can&amp;#8217;t find elsewhere.  I ended up driving over 9 hours to get to it.  I&amp;#8217;d have preferred the technology triangle, which if nothing else is close to major airports, bus and train stops, and Red Hat.&lt;/p&gt;

&lt;p&gt;Richard Hipp talked about the great fsync() bug, a similar talk to the one he gave at the first OpenSQL Camp.  Someone asked about Tokyo Cabinet and he responded that he hasn&amp;#8217;t found any fsync() calls in its source code.  *cough*  Something worth thinking about for on-disk usage (I haven&amp;#8217;t looked at its source much myself).  TC can also be used in-memory-only, and a while back I suggested that usage of it for Drizzle to replace the Memory engine; I don&amp;#8217;t know what became of that.&lt;/p&gt;</description><guid isPermaLink="false">http://www.xaprb.com/blog/?p=483</guid><pubDate>Sun, 21 Jun 2009 13:48:49 GMT</pubDate></item><item><title>PostgreSQL Weekly News: PostgreSQL Weekly News June 21st 2009</title><link>http://www.postgresql.org/community/weeklynews/pwn20090621</link><description>The Call for Papers for pgday.eu is out.  Submit!
&lt;a href="http://2009.pgday.eu/"&gt;http://2009.pgday.eu/&lt;/a&gt;</description><guid isPermaLink="true">http://www.postgresql.org/community/weeklynews/pwn20090621</guid><pubDate>Sun, 21 Jun 2009 08:00:00 GMT</pubDate></item><item><title>Robert Hodges: When SANs Go Bad</title><link>http://scale-out-blog.blogspot.com/2009/06/when-sans-go-bad.html</link><description>They sometimes go bad in completely unpredictable ways.  Here's a problem I have now seen twice in production situations.  A host boots up nicely and mounts file systems from the SAN.  At some point a SAN switch (e.g., through a Fibrechannel controller) fails in such a way that the SAN goes away but the file system still appears visible to applications.&lt;br /&gt;&lt;br /&gt;This kind of problem is an example of a &lt;a href="http://en.wikipedia.org/wiki/Byzantine_Fault_Tolerance"&gt;Byzantine fault&lt;/a&gt; where a system does not fail cleanly but instead starts to behave in a completely arbitrary manner.  It seems that you can get into a state where the in-memory representation of the file system inodes is intact but the underlying storage is non-responsive.  The non-responsive file system in turn can make operating system processes go a little crazy.  They continue to operate but show bizarre failures or hang.  The result is problems that may not be diagnosed or even detected for hours.&lt;br /&gt;&lt;br /&gt;What to do about this type of failure?   Here are some ideas.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span&gt;Be careful what you put on the SAN&lt;/span&gt;.  Log files and other local data should not go onto the SAN.  Use local files with syslog instead.  Think about it:  your application is sick and trying to write a log message to tell you about it on a non-responsive file system.  In fact, if you have a robust scale-out architecture, don't use a SAN at all.   Use database replication and/or DRBD instead to protect your data.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Test the SAN configuration carefully, especially failover scenarios&lt;/span&gt;.  What happens when the host fails from access one path to another?  What happens when another host picks up the LUN from a "failed" host?  Do you have fencing properly enabled?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Actively look for SAN failures&lt;/span&gt;.  Write test files to each mounted file system and read them back as part of your regular monitoring.   That way you know that the file system is fully "live."&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The last idea gets at a core issue with SAN failures--they are rare, so it's not the first thing people  think of when there is a problem.  The first time this happened on one of my systems it was around 4am in the morning.   It took a really long time to figure out what was going on.  We didn't exactly feel like geniuses when we finally checked the file system.&lt;br /&gt;&lt;br /&gt;SANs are great technology, but there is an increasingly large "literature" of SAN failures on the net, such as &lt;a href="http://arjen-lentz.livejournal.com/132978.html"&gt;this overview from Arjen Lentz&lt;/a&gt; and &lt;a href="http://communities.vmware.com/thread/195806"&gt;this example of a typical failure.&lt;/a&gt;   You need to design mission-critical systems with SAN failures in mind.  Otherwise you may want to consider avoiding SAN use entirely.&lt;div class="blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/768233104244702633-5151745197465987146?l=scale-out-blog.blogspot.com" /&gt;&lt;/div&gt;</description><guid isPermaLink="true">tag:blogger.com,1999:blog-768233104244702633.post-5151745197465987146</guid><pubDate>Sat, 20 Jun 2009 17:27:34 GMT</pubDate></item><item><title>Scott Bailey: Simplify XML Parsing in Postgres</title><link>http://scottrbailey.wordpress.com/2009/06/19/xml-parsing-postgres/</link><description>scottrbailey</description><guid isPermaLink="false">http://scottrbailey.wordpress.com/?p=69</guid><pubDate>Fri, 19 Jun 2009 21:15:23 GMT</pubDate></item></channel></rss>