<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>..::Planet PostgreSQL::..</title>
	<link>http://www.planetpostgresql.org/</link>
	<language>en</language>
	<description>..::Planet PostgreSQL::.. - http://www.planetpostgresql.org/</description>

<item>
	<title>Dan Langille: Bacula Retention Periods</title>
	<guid>http://dan.langille.org/2010/02/08/bacula-retention-periods/</guid>
	<link>http://dan.langille.org/2010/02/08/bacula-retention-periods/</link>
	<description>Bacula is a backup system with three different retention periods:

Volume
Job
File

I set all three to the same value.
It is important to note that these values affect only the Catalog.  It determines how long a given record is held in the database.  For example, if you set File Retention to be 45 days, it means [...]</description>
	<pubDate>Tue, 09 Feb 2010 03:08:19 +0000</pubDate>
</item>
<item>
	<title>Josh Berkus: PostgreSQL East vs. pgCon: a FAQ</title>
	<guid>http://it.toolbox.com/blogs/database-soup/postgresql-east-vs-pgcon-a-faq-36835?rss=1</guid>
	<link>http://it.toolbox.com/blogs/database-soup/postgresql-east-vs-pgcon-a-faq-36835?rss=1</link>
	<description>Given that they occur on the same continent 2 months apart, many people are confused by PostgreSQL East vs. pgCon.  Let me run down the comparison so that people can be clear on what each offers (and go to both, of course!):</description>
	<pubDate>Tue, 09 Feb 2010 00:02:21 +0000</pubDate>
</item>
<item>
	<title>Dave Page: FOSDEM 2010</title>
	<guid>http://pgsnake.blogspot.com/2010/02/fosdem-2010.html</guid>
	<link>http://pgsnake.blogspot.com/2010/02/fosdem-2010.html</link>
	<description>Well, &lt;a href=&quot;http://fosdem.org/2010&quot;&gt;FOSDEM 2010&lt;/a&gt; is now over and it all seemed to go pretty well. The PostgreSQL Project was represented well (as one would hope for our second biggest annual European gathering), with the majority of the Hotel Agenda Louise seemingly occupied by database geeks.&lt;br /&gt;&lt;br /&gt;On the Friday night we had a database dinner at &lt;a href=&quot;http://www.les-brasseurs.com/en/info.html&quot;&gt;Les Brasseurs de la Grand Place&lt;/a&gt; where we were joined by Sergey Petrunya and Kristian Nielsen from MariaDB. Good conversation, good beer and good food followed later by an aborted attempt to join the FOSDEM Beer Event at Cafe Delirium (it was just too busy) and a successful landing at the Irish pub a short walk form the Hotel.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_5d50ZFJBYts/S3AsbKs2qmI/AAAAAAAAACA/wfAq_StCODo/s1600-h/brasseurs.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_5d50ZFJBYts/S3AsbKs2qmI/AAAAAAAAACA/wfAq_StCODo/s320/brasseurs.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5435893595476765282&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Saturday morning was the start of the conference itself. We'd hoped to scrounge an extra table (much needed, with the number of people and the amount of swag we had), but unfortunately that didn't work out. Somehow, we managed to squeeze onto one.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_5d50ZFJBYts/S3Asr79plxI/AAAAAAAAACI/7isffiI3j3Y/s1600-h/booth.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_5d50ZFJBYts/S3Asr79plxI/AAAAAAAAACI/7isffiI3j3Y/s320/booth.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5435893883578455826&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The talks started at 1PM in our dev room (which we only had for Saturday afternoon unfortunately). Magnus and Jean-Paul started with report on the state of PostgreSQL Europe, and then it was my turn with my talk on &quot;Developments in PostgreSQL 9.0&quot;. Slides and the full schedule can be found on the &lt;a href=&quot;http://wiki.postgresql.org/wiki/FOSDEM%2C_Brussels_2010&quot;&gt;PostgreSQL Wiki&lt;/a&gt;. The dev room was basically packed solid with people sitting on the floor for every talk. Please FOSDEM organisers - give us a bigger room next year!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_5d50ZFJBYts/S3AuLhCEM3I/AAAAAAAAACQ/3RLGqfNx3f4/s1600-h/talk.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_5d50ZFJBYts/S3AuLhCEM3I/AAAAAAAAACQ/3RLGqfNx3f4/s320/talk.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5435895525616661362&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Saturday night was a late dinner at possibly the slowest restaurant in the world, who clearly weren't expecting too many diners. Food wasn't too bad though, when it finally arrived.&lt;br /&gt;&lt;br /&gt;Sunday was spent mostly on the booth and (in my case) in lots of ad-hoc meetings on topics such as the new PostgreSQL project infrastructure thats in development, as well as PGDay.EU 2010 which is being planned in Paris.&lt;br /&gt;&lt;br /&gt;Most of us left at around 5PM, with Heikki, Greg, Magnus, Stefan and I heading for the airport. After pizza and a brief scare when Stefan lost his boarding pass, we left for home. Goodbye Brussels, see you next year.&lt;br /&gt;&lt;br /&gt;More photos can be found &lt;a href=&quot;http://pgsnake.smugmug.com/Conferences/FOSDEM-2010/11179750_L5RjY#783792142_2snSz&quot;&gt;here&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3645070705954691807-8068447311333837651?l=pgsnake.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 08 Feb 2010 16:29:18 +0000</pubDate>
	<author>noreply@blogger.com (Dave Page)</author>
</item>
<item>
	<title>Selena Deckelmann: Unlocking the clubhouse: cultural resistance and learning communities</title>
	<guid>http://www.chesnok.com/daily/2010/02/08/unlocking-the-clubhouse-cultural-resistance-and-learning-communitiesand/</guid>
	<link>http://www.chesnok.com/daily/2010/02/08/unlocking-the-clubhouse-cultural-resistance-and-learning-communitiesand/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/7363510@N06/2296751400/&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/02/2296751400_8069ffe722-300x225.jpg&quot; alt=&quot;&quot; title=&quot;Up in a fort&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1449&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I finished reading &amp;#8220;&lt;a href=&quot;http://www.amazon.com/Unlocking-Clubhouse-Computing-Jane-Margolis/dp/0262632691/ref=sr_1_1?ie=UTF8&amp;#038;s=books&amp;#038;qid=1265643883&amp;#038;sr=8-1&quot;&gt;Unlocking the clubhouse&lt;/a&gt;&amp;#8221; on Saturday, finally. The book is only about 150 pages long, but it&amp;#8217;s full of useful information about increasing participation of women in computer science. &lt;/p&gt;
&lt;p&gt;The chapter that most stuck with me was chapter 6, &amp;#8220;Persistence and Resistance: Staying in Computer Science.&amp;#8221; I have said more than once, in a tongue-in-cheek way, that &lt;a href=&quot;http://www.chesnok.com/daily/2009/04/29/whats-changed-portland-as-an-example-of-increasing-womens-participation/&quot;&gt;Code-n-Splode&lt;/a&gt;&amp;#8217;s mantra for men who think that we should not have the &amp;#8220;dude token&amp;#8221; policy should be: &amp;#8220;It&amp;#8217;s just not about you.&amp;#8221; &lt;/p&gt;
&lt;p&gt;My feeling is that establishing a culture where female voices dominate, rather than are assimilated in, creates a social environment that&amp;#8217;s fundamentally different. And that that difference is *good*. I wouldn&amp;#8217;t say that the book totally supports that notion, but it points out situations where women found peer groups that did not conform to a male hacker stereotype, and that foundation of social support helped them stay in their course of study.&lt;/p&gt;
&lt;p&gt;The students referred to in the paragraph are undergraduates at Carnegie Mellon University:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Women who accept the prevailing culture as the norm and who continuously compare themselves to this norm and find themselves coming up short are the ones who suffer the most. &lt;/p&gt;
&lt;p&gt;The majority of women struggle to find a place where they can feel comfortable in the prevailing culture&amp;#8230;&lt;/p&gt;
&lt;p&gt;Ironically, it is in this area of relationship to culture that international women may have an edge. The international women do not as readily use the U.S. male hacker as their reference group.  Since they are not fully part of this culture, their reference group is elsewhere. Many international students have alternative success norms and social bonds that protect them. Other priorities are dominant, and with these come other scales for self-evaluation.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So, rather than bringing their cultural norms to the hacker culture and modifying it, the international women have their own social structures which exist outside of the dominant culture. &amp;#8220;Cultural resistance&amp;#8221; was the title for this section, and it&amp;#8217;s a great way of characterizing the lack of assimilation.&lt;/p&gt;
&lt;p&gt;I have more than a few times heard women-specific groups discouraged because of they emphasize differences that the dominant culture feels should be unimportant. I&amp;#8217;m interested in further research that discusses the effects of splinter groups, particularly when they are created for women.&lt;/p&gt;
&lt;p&gt;The second interesting topic in this chapter concerned learning communities. &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Former University of California calculus professor Uri Treisman (1992) believes that a supportive learning community is critically important for the success of minority students in math and science.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The story went on to describe Professor Treisman&amp;#8217;s observation that Asian students tended to socialize *and* study in supportive groups, which tended to help students stick with the courses and get better grades. He established similar groups for Hispanic and African American students, and found across several universities and colleges that these groups helped retention. Our observations and the resulting user group for  women mirrors that Professor&amp;#8217;s experience. &lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a special connection created when you live and engage with material in a supportive learning community. They take time to create, and are a bit harder to maintain outside of an academic context (where life, work and diverging interests can be a bit more challenging to coordinate).&lt;/p&gt;
&lt;p&gt;Code-n-splode has been fairly quiet about its successes, but I think now is the time for us to start talking a bit more about how well the group has succeeded.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo courtesy of &lt;a href=&quot;http://www.flickr.com/photos/7363510@N06/2296751400/&quot;&gt;DrPantzo&lt;/a&gt; under a Creative Commons License&lt;/em&gt;.&lt;/p&gt;
&lt;img src=&quot;http://www.chesnok.com/daily/?ak_action=api_record_view&amp;amp;id=1448&amp;amp;type=feed&quot; alt=&quot;&quot; /&gt;</description>
	<pubDate>Mon, 08 Feb 2010 16:07:10 +0000</pubDate>
</item>
<item>
	<title>Magnus Hagander: Time management by (somebody elses) press-releases</title>
	<guid>http://blog.hagander.net/archives/162-Time-management-by-somebody-elses-press-releases.html</guid>
	<link>http://blog.hagander.net/archives/162-Time-management-by-somebody-elses-press-releases.html</link>
	<description>&lt;p&gt;A while back I submitted a couple of talks for &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=201&amp;amp;entry_id=162&quot; title=&quot;http://www.postgresqlconference.org/2010/east/&quot;&gt;PG-East 2010&lt;/a&gt; in Philly, and over the past couple of weeks I've been nagging the organizers semi-frequently to get some pre-info on whether I've been accepted or not, since flight prices started to climb fairly rapidly. The site clearly says information that the information will be available on Feb 15th, so I can't really complain that the answer kept being &amp;quot;don't know yet&amp;quot;.&lt;/p&gt;

&lt;p&gt;A couple of days ago, I got a note from &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=202&amp;amp;entry_id=162&quot; title=&quot;http://pgsnake.blogspot.com&quot;&gt;Dave&lt;/a&gt; pinged me with a message asking if I was approved. Turns out &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=203&amp;amp;entry_id=162&quot; title=&quot;http://www.prnewswire.com/news-releases/enterprisedb-signs-on-as-exclusive-platinum-sponsor-of-pg-east-2010-to-enhance-industrys-largest-independent-open-source-database-event-83439987.html&quot;&gt;this press-release&lt;/a&gt; had been posted (by his company, no less). Which explicitly names me as a speaker at the conference.&lt;/p&gt;

&lt;p&gt;Took me two more days of chasing down &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=204&amp;amp;entry_id=162&quot; title=&quot;http://www.commandprompt.com/blogs/joshua_drake/&quot;&gt;JD&lt;/a&gt;, but I now have confirmation I'll be there. I don't actually know what I'll be speaking about, but it's a pretty safe bet it will be PostgreSQL related.&lt;/p&gt;

&lt;p&gt;I call this &lt;i&gt;Time management by press releases&lt;/i&gt;. If I could only get it to apply to all meetings, I would no longer need to keep my own calendar up to date.&lt;/p&gt;

&lt;p&gt;So, I'll see you in Philly!&lt;/p&gt;</description>
	<pubDate>Mon, 08 Feb 2010 16:07:00 +0000</pubDate>
	<author>nospam@example.com (Magnus Hagander)</author>
</item>
<item>
	<title>Robert Gravsjö: OT: Django 1.2 on track</title>
	<guid>http://postgresql.blogg.se/2010/february/ot-django-12-on-track.html</guid>
	<link>http://postgresql.blogg.se/2010/february/ot-django-12-on-track.html</link>
	<description>A little off topic but I'm very pleased to see that the timetable for Django 1.2 seems to be holding since they just entered feature freeze with beta 1. Among my favorite of features to come is, of course, support for multiple database backends. Other ...</description>
	<pubDate>Mon, 08 Feb 2010 08:24:54 +0000</pubDate>
</item>
<item>
	<title>Andreas Scherbaum: PostgreSQL @ FOSDEM 2010</title>
	<guid>http://andreas.scherbaum.la/blog/archives/660-PostgreSQL-FOSDEM-2010.html</guid>
	<link>http://andreas.scherbaum.la/blog/archives/660-PostgreSQL-FOSDEM-2010.html</link>
	<description>&lt;div class=&quot;serendipity_authorpic&quot;&gt;&lt;img src=&quot;http://andreas.scherbaum.la/blog/templates/default/img/Andreas__ads__Scherbaum.jpg&quot; alt=&quot;Author&quot; title=&quot;Andreas 'ads' Scherbaum&quot; /&gt;&lt;br /&gt;&lt;span&gt;Andreas 'ads' Scherbaum&lt;/span&gt;&lt;/div&gt;&lt;font&gt;The Open Source people have met again, like every year, in Brussels for the biggest open source event in europe - &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=7756&amp;amp;entry_id=660&quot; title=&quot;http://www.fosdem.org/&quot; target=&quot;_blank&quot;&gt;FOSDEM&lt;/a&gt;. The &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=7757&amp;amp;entry_id=660&quot; title=&quot;http://www.postgresql.eu/&quot; target=&quot;_blank&quot;&gt;European PostgreSQL User Group&lt;/a&gt; &lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=7777&amp;amp;entry_id=660&quot; title=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/49-FOSDEM-Starting.html&quot; target=&quot;_blank&quot;&gt;was present with &lt;/a&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/exit.php?url_id=7759&amp;amp;entry_id=660&quot; title=&quot;http://www.postgresql.org/about/event.1020&quot; target=&quot;_blank&quot;&gt;a booth and a devroom&lt;/a&gt;, plus a lot &amp;quot;community&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt; &lt;br /&gt;&lt;a href=&quot;http://andreas.scherbaum.la/blog/archives/660-PostgreSQL-FOSDEM-2010.html#extended&quot;&gt;Continue reading &quot;PostgreSQL @ FOSDEM 2010&quot;&lt;/a&gt;</description>
	<pubDate>Sun, 07 Feb 2010 22:55:00 +0000</pubDate>
	<author>nospam@example.com (Andreas 'ads' Scherbaum)</author>
</item>
<item>
	<title>Josh Berkus: Postgres needs a new Python driver</title>
	<guid>http://it.toolbox.com/blogs/database-soup/postgres-needs-a-new-python-driver-36815?rss=1</guid>
	<link>http://it.toolbox.com/blogs/database-soup/postgres-needs-a-new-python-driver-36815?rss=1</link>
	<description>Per discussion on the pgsql-hackers mailing list this month, the PostgreSQL database really needs a new (or dramatically improved) Python driver.  I have been only too aware of this due to the amount of Django work my team is doing lately.  Let me sum up the situation so that you don't have to comb all the way through that thread.  Hopefully at least one person reading this will take it as a call to action.</description>
	<pubDate>Sun, 07 Feb 2010 15:17:07 +0000</pubDate>
</item>
<item>
	<title>David Fetter: PostgreSQL Weekly News vs. Casa Donde</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/50-PostgreSQL-Weekly-News-vs.-Casa-Donde.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/50-PostgreSQL-Weekly-News-vs.-Casa-Donde.html</link>
	<description>This week's PostgreSQL Weekly news may be rescheduled to Wednesday February 10, evening PST.&lt;br /&gt;
&lt;br /&gt;
Thanks very much to whatever component failed at my home for this.</description>
	<pubDate>Sun, 07 Feb 2010 09:32:04 +0000</pubDate>
	<author>nospam@example.com (David Fetter)</author>
</item>
<item>
	<title>Leo Hsu and Regina Obe: PostGIS 1.5.0 out and PLR working on Windows 8.3-8.4 installs</title>
	<guid>http://www.postgresonline.com/journal/index.php?/archives/151-PostGIS-1.5.0-out-and-PLR-working-on-Windows-8.3-8.4-installs.html</guid>
	<link>http://www.postgresonline.com/journal/index.php?/archives/151-PostGIS-1.5.0-out-and-PLR-working-on-Windows-8.3-8.4-installs.html</link>
	<description>&lt;h4&gt;PostGIS 1.5.0 is finally out&lt;/h4&gt;
&lt;p&gt;I'm happy to report that after a long haul, we have finally released PostGIS 1.5.0. 
Two months late, but there it is, and its a really great release I think;  Perhaps the best release ever.
&lt;/p&gt;
&lt;p&gt;Details on what makes this release so special.  &lt;a href=&quot;http://blog.opengeo.org/2010/02/05/postgis-1-5/&quot; target=&quot;_blank&quot;&gt;The geodetic support&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Summary excerpted from &lt;a href=&quot;http://www.postgis.org/pipermail/postgis-devel/2010-February/008611.html&quot; target=&quot;_blank&quot;&gt;Paul's slightly premature announcement&lt;/a&gt;
&lt;pre&gt;
February 4, 2010

The PostGIS development team has, after a long course of reflection
and a detailed self-examination of our various personal failings,
decided to release PostGIS 1.5.0 to the public.

  &lt;a href=&quot;http://postgis.org/download/postgis-1.5.0.tar.gz&quot;&gt;http://postgis.org/download/postgis-1.5.0.tar.gz&lt;/a&gt;

This new version of PostGIS includes a new &quot;geography&quot; type for
managing geodetic (lat/lon) data, performance-enhanced distance
calculations, GML and KML format readers, an improved shape loading
GUI, and other new features as well.

Especial thanks to:

* Dave Skea for algorithms and mathematics necessary to support
spherical geometry
* Nicklas Avén for the new performance enhanced distance calculations
and other distance-related functions
* Sandro Santilli for new buffering features (end caps and style options)
* Olivier Courtin for GML/KML input functions
* Guillaume Lelarge for support for the upcoming PgSQL 9.0
* George Silva for an example implementation of history tables
* Vincent Picavet for Hausdorff distance calculations
* The maintainers of GEOS, Proj4, and LibXML, without whom we would
have less of a spatial database

Love, the PostGIS project steering committee,

Mark Cave-Ayland
Kevin Neufeld
Regina Obe
Paul Ramsey
&lt;/pre&gt;
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/151-PostGIS-1.5.0-out-and-PLR-working-on-Windows-8.3-8.4-installs.html#extended&quot;&gt;Continue reading &quot;PostGIS 1.5.0 out and PLR working on Windows 8.3-8.4 installs&quot;&lt;/a&gt;</description>
	<pubDate>Sun, 07 Feb 2010 05:58:00 +0000</pubDate>
	<author>nospam@example.com (Leo Hsu and Regina Obe)</author>
</item>
<item>
	<title>Dan Langille: Graphing</title>
	<guid>http://dan.langille.org/2010/02/06/graphing/</guid>
	<link>http://dan.langille.org/2010/02/06/graphing/</link>
	<description>I have about 14,000 data points collected from backups.  I started in Oct 2007, but have not done anything with the data.  I&amp;#8217;d like your help.
I have put the data into a PostgreSQL database and dumped it. The dump is here: http://langille.org/tmp/dlt_stats.sql.gz
The table looks like:

$ psql dan
psql (8.4.2)
Type &quot;help&quot; for help.

dan=# \d dlt_stats
 [...]</description>
	<pubDate>Sat, 06 Feb 2010 18:04:02 +0000</pubDate>
</item>
<item>
	<title>Andrew Dunstan: Damn it feels good to be a (perl) gangsta</title>
	<guid>http://people.planetpostgresql.org/andrew/index.php?/archives/60-Damn-it-feels-good-to-be-a-perl-gangsta.html</guid>
	<link>http://people.planetpostgresql.org/andrew/index.php?/archives/60-Damn-it-feels-good-to-be-a-perl-gangsta.html</link>
	<description>The recent debate Bruce Momjian has started on the confusing mess that is the Python drivers for PostgreSQL made me feel very glad I just don't use any of them. As &lt;a href=&quot;http://people.planetpostgresql.org/andrew/href&quot;&gt;Just Another Perl Hacker&lt;/a&gt;, I am so glad that we have a good, well defined and fairly stable database API for Perl, namely &lt;a href=&quot;http://search.cpan.org/~TIMB/DBI/DBI.pm&quot;&gt;DBI&lt;/a&gt;, and a pretty darn good implementation for PostgreSQL in &lt;a href=&quot;http://search.cpan.org/~turnstep/DBD-Pg-2.16.1/Pg.pm&quot;&gt;DBD::Pg&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Add to these some of the higher end modules like &lt;a href=&quot;http://search.cpan.org/~ribasushi/DBIx-Class-0.08117/lib/DBIx/Class.pm&quot;&gt;DBIx::Class&lt;/a&gt; for use in frameworks and ORMs, and &lt;a href=&quot;http://search.cpan.org/~ribasushi/SQL-Translator-0.11003/lib/SQL/Translator.pm&quot;&gt;SQL::Translator&lt;/a&gt; for dealing with multiple database flavors, and Perl programmers doing database work are in pretty good shape.&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Sat, 06 Feb 2010 14:33:29 +0000</pubDate>
	<author>nospam@example.com (Andrew Dunstan)</author>
</item>
<item>
	<title>Endpoint Team: PostgreSQL version 9.0 release date prediction</title>
	<guid>http://blog.endpoint.com/2010/02/postgresql-version-90-release-date.html</guid>
	<link>http://blog.endpoint.com/2010/02/postgresql-version-90-release-date.html</link>
	<description>&lt;p&gt;So when will PostgreSQL version 9.0 come out? I decided to &quot;run the numbers&quot; and take a look at how the Postgres project has done historically. Here's a quick graph showing the approximate number of days each major release since version 6.0 took:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_BSsdd9WIV2k/S2x1d_lS9KI/AAAAAAAAAAU/ur4JnsuCxno/s1600-h/postgres_version_days.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_BSsdd9WIV2k/S2x1d_lS9KI/AAAAAAAAAAU/ur4JnsuCxno/s400/postgres_version_days.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5434848008473867426&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Some interesting things can be seen here: there is a rough correlation between the complexity of a new release and the time it takes, major releases take longer, and the trend is gradually towards more days per release. Overall the project is doing great, releasing on average every 288 days since version 6. If we only look at version 7 and onwards, the releases are on average 367 days apart. If we look at *just* version 7, the average is 324 days. If we look at *just* version 8, the average is 410. Since the last major version that came out was on July 1, 2009, the numbers predict 9.0 will be released on July 3, 2010, based on the version 7 and 8 averages, and on August 15, 2010, based on just the version 8 averages. However, this upcoming version has two very major features, streaming replication (SR) and hot standby (HS). How those will affect the release schedule remains to be seen, but I suspect the 9.0 to 9.1 window will be short indeed.&lt;/p&gt;
&lt;p&gt;As a recap, the Postgres project only bumps the first part of the version number for major changes (Although many, myself included, would argue that 7.4 was such a major jump it should have been called 8.0). The second number occurs anytime a &quot;new release&quot; happens, and means new features and enhancements. The final number, the revision, is only incremented for security and bug fixes, and is almost always a 100% binary compatible drop in for the previous revision in the branch. (What's the average (mean) days between revisions? 84 days since version 6, and 88 days since version 7. The medians are 84 and 87 respectively.)&lt;/p&gt;&lt;p&gt;How busy were those periods? Here's the number of commits per release period. Note that I said release period, not release, as commits are still being made to old branches, although this is a very small minority of the commits, so I did not bother to break it down at that level.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_BSsdd9WIV2k/S2yEw2Dtc7I/AAAAAAAAAAc/RY1PclESiQY/s1600-h/postgres_version_commits.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_BSsdd9WIV2k/S2yEw2Dtc7I/AAAAAAAAAAc/RY1PclESiQY/s400/postgres_version_commits.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5434864825009009586&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;There is a strong correlation with the previous chart. Of note is version 8.1, which had few commits and was released relatively quickly. Also note that version 8.0 is still winning as far as the sheer number of commits, most likely due to the fact that native Windows support was added in that version.&lt;/p&gt;
&lt;p&gt;Some other items of interest from the data:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;There have been roughly 140,000 commits from version 6.0 to 8.4.2.&lt;/li&gt;&lt;li&gt;There have been 32 CVS committers since the start of the project (and of course, many hundreds of others whose work was funnelled through those committers)&lt;/li&gt;&lt;li&gt;The mean number of commits per person is 4383, but the distribution is very skewed: Bruce, Peter, and Tom account for 80% of all commits, with the mean between them of 37,000 commits.&lt;/li&gt;&lt;li&gt;Commits changed about 40 lines on average.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Alright, two final charts: commits per time periods. I'll let the data speak for itself this time. Stay tuned for future blog posts exploring this data further!&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_BSsdd9WIV2k/S2yNYHG1wPI/AAAAAAAAAAk/FzFGLixpN8w/s1600-h/postgres_commits_dow.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_BSsdd9WIV2k/S2yNYHG1wPI/AAAAAAAAAAk/FzFGLixpN8w/s400/postgres_commits_dow.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5434874295693459698&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_BSsdd9WIV2k/S2yS7-TQuoI/AAAAAAAAAAs/LDxOqcqDKNw/s1600-h/postgres_commits_hour.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_BSsdd9WIV2k/S2yS7-TQuoI/AAAAAAAAAAs/LDxOqcqDKNw/s320/postgres_commits_hour.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5434880409363069570&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-3701962962444205329?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 06 Feb 2010 08:10:10 +0000</pubDate>
	<author>noreply@blogger.com (Greg Sabino Mullane)</author>
</item>
<item>
	<title>Peter Eisentraut: My Favorite PostgreSQL 9.0 Feature</title>
	<guid>http://petereisentraut.blogspot.com/2010/02/my-favorite-postgresql-90-feature.html</guid>
	<link>http://petereisentraut.blogspot.com/2010/02/my-favorite-postgresql-90-feature.html</link>
	<description>My favorite PostgreSQL 9.0 feature does not have a &lt;a href=&quot;http://petereisentraut.blogspot.com/2010/01/procedural-languages-in-postgresql-85.html&quot;&gt;two-letter acronym&lt;/a&gt;.  It's the new &lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/datatype-binary.html&quot;&gt;bytea&lt;/a&gt; format, available since 8.5alpha1.&lt;br /&gt;&lt;br /&gt;At &lt;a href=&quot;http://www.f-secure.com/weblog/&quot;&gt;F-Secure Labs&lt;/a&gt;, as you might imagine, we store information about a bunch of malware samples.  Throughout the computer security industry, file samples, malware or perhaps not, are referred to by a hash value, such as MD5, SHA1, or SHA256.  The typical representation of such hash values in most programming environments and also in prose and literature is the hexadecimal format, for example &lt;tt&gt;da39a3ee5e6b4b0d3255bfef95601890afd80709&lt;/tt&gt;.  Except when you want to write a test case against PostgreSQL or want to track down a problem, you'll be looking for &lt;tt&gt;\3329\243\356^kK\0152U\277\357\225`\030\220\257\330\007\011&lt;/tt&gt;, also known as &lt;tt&gt;\\3329\\243\\356^kK\\0152U\\277\\357\\225`\\030\\220\\257\\330\\007\\011&lt;/tt&gt; in some contexts.&lt;br /&gt;&lt;br /&gt;Well, that's over now; it will show as &lt;tt&gt;\xda39a3ee5e6b4b0d3255bfef95601890afd80709&lt;/tt&gt;.  You will still need to take care of the backslash, but that will surely be resolved when &lt;tt&gt;standard_conforming_strings&lt;/tt&gt; is turned on in version 10.0 ;-), or we implement a new, SQL-standard conforming binary string type without legacy syntax issues.&lt;br /&gt;&lt;br /&gt;By the way, the actual origin of this feature idea was a performance problem, &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2009-05/msg00192.php&quot;&gt;reported&lt;/a&gt; by Bernd Helmle.  The new format is quite a bit faster to encode and decode: In some internal tests, pg_dump of tables with mostly binary data was twice as fast and created a dump file that was half the size with the new format compared to the old format.  So hopefully everyone wins.&lt;br /&gt;&lt;br /&gt;Another new feature in the same area, by the way, is that PL/Python now supports bytea values sanely, &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2009-05/msg01060.php&quot;&gt;contributed&lt;/a&gt; by Caleb Welton.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5541296000399974369-8399102629610259259?l=petereisentraut.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 06 Feb 2010 01:19:22 +0000</pubDate>
	<author>peter@eisentraut.org (Peter Eisentraut)</author>
</item>
<item>
	<title>Dan Langille: Big storage</title>
	<guid>http://dan.langille.org/2010/02/05/big-storage/</guid>
	<link>http://dan.langille.org/2010/02/05/big-storage/</link>
	<description>I&amp;#8217;m thinking about creating a storage box.  One with a lot of disk space. It will be used for backups and stuff.  I will continue to backup to tape as well.
I&amp;#8217;m considering this case, which has 8xSATA hot-swap bays:

http://www.newegg.com/Product/Product.aspx?Item=N82E16811192058

If I was buying a RAID card, I&amp;#8217;d buy this one:

http://www.newegg.com/Product/Product.aspx?Item=N82E16816131002&amp;#038;Tpk=areca%201120

But I may go with [...]</description>
	<pubDate>Fri, 05 Feb 2010 17:59:03 +0000</pubDate>
</item>
<item>
	<title>David Fetter: FOSDEM Starting</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/49-FOSDEM-Starting.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/49-FOSDEM-Starting.html</link>
	<description>The herd of blue elephants is gathering for FOSDEM, including several talks in the main track.&lt;br /&gt;
&lt;br /&gt;
I'd like to thank the FOSDEM for making it possible for me to attend this year.&lt;br /&gt;
&lt;br /&gt;
More on this soon...</description>
	<pubDate>Fri, 05 Feb 2010 07:10:07 +0000</pubDate>
	<author>nospam@example.com (David Fetter)</author>
</item>
<item>
	<title>Bulgarian PUG: Using G-WAN C Servlets with PostgreSQL under Win32</title>
	<guid>http://bgpug.groupsite.com/post/using-g-wan-c-servlets-with-postgresql-under-win32</guid>
	<link>http://bgpug.groupsite.com/post/using-g-wan-c-servlets-with-postgresql-under-win32</link>
	<description>&lt;p&gt;I have posted an example how to use G-WAN C Servlets with PostgreSQL. Check it out.&lt;/p&gt;
&lt;p&gt;
&lt;a target=&quot;_blank&quot; title=&quot;GWAN, C&quot; href=&quot;http://forum.trustleap.com/web/g-wanforum.nsf/viewTopic.xsp?topicID=14755geq70r28&quot;&gt;http://forum.trustleap.com/web/g-wanforum.nsf/viewTopic.xsp?topicID=14755geq70r28&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;G-WAN is a small-footprint (100 KB) Web server with C scripts executed in real-time (no compiler needed). G-WAN C scripts are as fast as static pages. It is much, much faster than Apache and IIS. More about it &lt;a target=&quot;_self&quot; href=&quot;http://trustleap.com/&quot;&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Peter&lt;/p&gt;</description>
	<pubDate>Thu, 04 Feb 2010 19:14:02 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Caring for Your (PG) Introvert</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#February_4_2010</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#February_4_2010</link>
	<description>&lt;p&gt;Many computer programmers are introverts because they have chosen the solitary job of creating programs that accomplish specific tasks. 
Open source developers are probably even more prone to be introverts because the (boring?) meetings, office chit-chat, and lunch outings
are mostly gone, with the only communication being via email, instant messaging, twitter, and blogs.  Open source social interaction is
certainly more controlled than traditional communication.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#February_4_2010&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 04 Feb 2010 16:15:00 +0000</pubDate>
</item>
<item>
	<title>Simon Riggs: Parallel Query (1)</title>
	<guid>http://database-explorer.blogspot.com/2010/02/parallel-query-1.html</guid>
	<link>http://database-explorer.blogspot.com/2010/02/parallel-query-1.html</link>
	<description>I recently returned from a lunch meeting of the UK ex-Teradatans to see old friends and colleagues. Some people know that I spent time with Teradata when it was in startup mode, what seems like a very long time ago now. Anyway, that's left me with good knowledge and interest in parallel database systems. And that's why I know Greenplum's Chief Architect Chuck McDevitt and hence why I've been using Greenplum on and off since 2005. Greenplum have also funded some of the developments I've done for PostgreSQL.&lt;br /&gt;&lt;br /&gt;I'm disappointed we've not made much progress with parallel operations and partitioning in core Postgres in last few releases. Recent Greenplum results show we have much work to do in improving things. &lt;a href=&quot;http://community.greenplum.com/showthread.php?t=113&quot;&gt;http://community.greenplum.com/showthread.php?t=113&lt;/a&gt;&lt;br /&gt;Some people may think I should be sad at that, though the way I see it, Greenplum is very close to being PostgreSQL. It just happens to have some good performance enhancements of great use in Data Warehousing. A few other enhanced versions of Postgres exist also.&lt;br /&gt;&lt;br /&gt;Some other recent results also show that MonetDB and Infobright don't fare any better by comparison either.&lt;br /&gt;&lt;a href=&quot;http://community.greenplum.com/showthread.php?t=111&quot;&gt;http://community.greenplum.com/showthread.php?t=111&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Having seen the above results I'm thinking about projects for next release now. Anybody want to fund some additional Data Warehousing features in Postgres core? I'm determined that next release we will get Bitmap Indexes in core, at least.&lt;br /&gt;&lt;br /&gt;There's some more to discuss on parallel query, such as &quot;How does this all relate to Hot Standby?&quot;,  so I'll follow up later with another blog.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/9053536529694784563-5275162561323254222?l=database-explorer.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Feb 2010 14:18:00 +0000</pubDate>
	<author>noreply@blogger.com (Simon Riggs)</author>
</item>
<item>
	<title>Endpoint Team: LCA2010: Postgres represent!</title>
	<guid>http://blog.endpoint.com/2010/01/lca2010-postgres-represent.html</guid>
	<link>http://blog.endpoint.com/2010/01/lca2010-postgres-represent.html</link>
	<description>&lt;p&gt;
I had the pleasure of attending and presenting at &lt;a href=&quot;http://lca2010.org.nz/&quot;&gt;LinuxConf.AU&lt;/a&gt; this year in Wellington, NZ. Linux Conf.AU is an institution whose friendliness and focus on the practical business of creating and sustaining open source projects was truly inspirational. 
&lt;/p&gt;
&lt;p&gt;
My talk this year was &quot;&lt;a href=&quot;http://www.lca2010.org.nz/programme/schedule/view_talk/50332?day=wednesday&quot;&gt;A Survey of Open Source Databases&quot;&lt;/a&gt;, where I actually created a survey and asked over 35 open source database projects to respond. I have received about 15 responses so far, and also did my own research on the over 50 projects I identified. I created a place-holder site for my research at: &lt;a href=&quot;http://ossdbsurvey.org&quot;&gt;ossdbsurvey.org&lt;/a&gt;.  I'm hoping to revise the survey (make it shorter!!) and get more projects to provide information. 
&lt;/p&gt;
&lt;p&gt;

Ultimately, I'd like the site to be a central location for finding information and comparing different projects. Performance of each is a huge issue, and there are a lot of individuals constructing good (and bad) systems for comparing. I don't think I want to dive into that pool, yet. But I would like to start collecting the work others have done in a central place. Right now it is really far too difficult to find all of this information. 
&lt;/p&gt;
&lt;p&gt;

Part of the talk was also a foray into the dangerous world of classification. I tried to put together basic categories, based on conversations with individual developers and some fine-tuning with Josh Berkus. Josh gave a short overview of database models during &quot;&lt;a href=&quot;http://miniconf.osda.asn.au/proposal/37/relational-vs-non-relational&quot;&gt;Relational vs Non-relational&lt;/a&gt;&quot; in the Data Storage mini-conf, and we collaborated some on category definition. I also saw Devdas Bhagat give a &lt;a href=&quot;http://miniconf.osda.asn.au/proposal/53/refactoring-large-ha-postgresql-databases&quot;&gt;use case talk on using Postgres,&lt;/a&gt; yet again confirming how wonderful &lt;a href=&quot;http://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysis&quot;&gt;transactional DDL&lt;/a&gt; is for developers. I also gave a lightning talk (WITHOUT SLIDES!) on Bucardo at the tail end of the Data Storage mini-conf.
&lt;/p&gt;
&lt;p&gt;

Josh Berkus, during &quot;&lt;a href=&quot;http://www.lca2010.org.nz/programme/schedule/view_talk/50016?day=thursday&quot;&gt;PostgreSQL Development Today&lt;/a&gt;&quot;, announced to the world that the new version of Postgres would be version 9.0! And he did a live demonstration of streaming replication and hot standby. The audience seemed pleased. 
&lt;/p&gt;
&lt;p&gt;

I was delighted to see representatives from the Postgres community on the main stage of the conference three times during LCA!
&lt;/p&gt;
&lt;p&gt;

And finally, I had the pleasure of participating in the Friday keynote lightning talks. I kicked things off by telling the story of the elections in Ondo State, Nigeria, in 5 minutes. I saw that one of the IT people I met while in Akure was &lt;a href=&quot;http://www.osundefender.org/?p=7368&quot;&gt;now helping Osun state investigate and correct&lt;/a&gt; election fraud in January. So glad to see that their good work continues!
&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-6406131209518665511?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Feb 2010 12:44:29 +0000</pubDate>
	<author>noreply@blogger.com (Selena Deckelmann)</author>
</item>
<item>
	<title>Andrew Dunstan: Gitting it better now</title>
	<guid>http://people.planetpostgresql.org/andrew/index.php?/archives/59-Gitting-it-better-now.html</guid>
	<link>http://people.planetpostgresql.org/andrew/index.php?/archives/59-Gitting-it-better-now.html</link>
	<description>Well, with some help from some comments on this blog and also from rereading &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2009-06/msg00181.php&quot;&gt;this message from Aidan Van Dyk&lt;/a&gt; and understanding it a lot more this time, I think I have a handle on how the buildfarm should support Git repositories.&lt;br /&gt;
&lt;br /&gt;
When the branch copy (which will be called &lt;code&gt;[branchname]/pgsql&lt;/code&gt;, just as it is with CVS) exists, the buildfarm client will do an update by simply calling &lt;code&gt;git pull&lt;/code&gt;. Where it does not exist, the client will create it by calling &lt;code&gt;git clone&lt;/code&gt; followed by &lt;code&gt;git checkout -t origin/[branchname] -b bf_[branchname]&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
This part is already working with my test buildfarm animal, in fact.&lt;br /&gt;
&lt;br /&gt;
What I will add is support for an additional &lt;code&gt;git_references&lt;/code&gt; config parameter, which can be used as part of the clone command. By default it will not be there, in which case the user would get a plain clone of the configured master repo. Setting up the references repo would be something documented but not done by the script.&lt;br /&gt;
&lt;br /&gt;
One of the things that is mildly annoying from a developer perspective (it won't really affect buildfarm users) is that, as I understand it, when using Aidan's recommendation, getting updates into your working copy will require two commands rather than one (&lt;code&gt;git fetch&lt;/code&gt; on your local master followed by &lt;code&gt;git pull&lt;/code&gt; on your working copy). I guess that can be aliased, and it's something I will probably do pretty soon.</description>
	<pubDate>Tue, 02 Feb 2010 23:17:39 +0000</pubDate>
	<author>nospam@example.com (Andrew Dunstan)</author>
</item>
<item>
	<title>US PostgreSQL Association: Seattle PostgreSQL Users's Group</title>
	<guid>http://www.postgresql.us/node/112</guid>
	<link>http://www.postgresql.us/node/112</link>
	<description>&lt;p&gt;JD Wrote:&lt;/p&gt;
&lt;p&gt;Last &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;West&lt;/a&gt;, a sign up sheet was sent out for people who were interested in starting a Seattle PostgreSQL group. I am please to say that this group has started. Their first meeting is February 9th, 2010. I have the honor of being their first speaker. I will be speaking on Dumb Simple PostgreSQL Performance, which is the same talk I have been giving at various user groups around Seattle (Python, Django, Perl). You can &lt;a href=&quot;http://www.seapug.org/&quot;&gt;check out there website here.&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 02 Feb 2010 18:38:59 +0000</pubDate>
</item>
<item>
	<title>Hubert Lubaczewski: Waiting for 9.0 – removal of 0000000001.history check</title>
	<guid>http://www.depesz.com/index.php/2010/02/02/waiting-for-9-0-removal-of-0000000001-history-check/</guid>
	<link>http://www.depesz.com/index.php/2010/02/02/waiting-for-9-0-removal-of-0000000001-history-check/</link>
	<description>I tend to write about new features in new versions of PostgreSQL, but this patch actually fixes one of the things that annoy me a lot, so here it goes:
On 26th of January, Simon Riggs committed:
Log Message:
-----------
Fix longstanding gripe that we check for 0000000001.history at start of
archive recovery, even when we know it is never [...]</description>
	<pubDate>Tue, 02 Feb 2010 14:35:21 +0000</pubDate>
</item>
<item>
	<title>Endpoint Team: Automatic migration from Slony to Bucardo</title>
	<guid>http://blog.endpoint.com/2010/01/automatic-migration-from-slony-to.html</guid>
	<link>http://blog.endpoint.com/2010/01/automatic-migration-from-slony-to.html</link>
	<description>&lt;p&gt;About &lt;a href=&quot;https://mail.endcrypt.com/pipermail/bucardo-general/2009-December/000489.html&quot;&gt;a month ago&lt;/a&gt;, Bucardo added an interesting set of features in the form of a &lt;a href=&quot;http://github.com/bucardo/bucardo/blob/master/scripts/slony_migrator.pl&quot;&gt;new script called slony_migrator.pl&lt;/a&gt;. In this post I'll describe slony_migrator.pl and its three major functions.&lt;/p&gt;
&lt;h2&gt;The Setup&lt;/h2&gt;
&lt;p&gt;For these examples, I'm using the &lt;a href=&quot;http://pgfoundry.org/projects/dbsamples/&quot;&gt;pagila sample database&lt;/a&gt; along with a set of scripts I wrote and made available &lt;a href=&quot;http://josh.endpoint.com/slony-pagila.tgz&quot;&gt;here&lt;/a&gt;. These scripts build two different Slony clusters. The first is a simple one, which replicates this database from a database called &quot;pagila1&quot; on one host to a database &quot;pagila2&quot; on another host. The second is more complex. Its one master node replicates the pagila database to two slave nodes, one of which replicates it again to a fourth slave using Slony's FORWARD function as described &lt;a href=&quot;http://blog.endpoint.com/2010/01/postgres-slony-cascading-subscription.html&quot;&gt;here&lt;/a&gt;. I implemented this setup on two FreeBSD virtual machines, known as myfreebsd and myfreebsd2. The reset-simple.sh and reset-complex.sh scripts in the script package I've linked to will build all the necessary databases from one pagila database and do all the Slony configuration.&lt;/p&gt;
&lt;h2&gt;Slony Synopsis&lt;/h2&gt;
&lt;p&gt;The slony_migrator.pl script has three possible actions, the first of which is to connect to a running Slony cluster and print a synopsis of the Slony setup it discovers. You can do this safely against a running, production Slony cluster; it gathers all its necessary information from a few simple Slony queries. Here's the synopsis the script writes for the simple configuration I described above:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo/scripts$ ./slony_migrator.pl -db pagila1 -H myfreebsd
Slony version: 1.2.16
psql version: 8.3
Postgres version: 8.3.7
Slony schema: _pagila
Local node: 1
SET 1: All pagila tables
* Master node: 1  Active: Yes  PID: 3309  Comment: &quot;Cluster node 1&quot;
  (dbname=pagila1 host=myfreebsd user=postgres)
  ** Slave node:  2  Active: Yes  Forward: Yes  Provider:  1  Comment: &quot;Node 2&quot;
     (dbname=pagila2 host=myfreebsd2 user=postgres)
&lt;/pre&gt;
&lt;p&gt;The script has reported the Slony, PostgreSQL, and psql versions, the Slony schema name, and shows that there's only one set, replicated from the master node to one slave node, including connection information for each node. Here is the output of the same action, run against the complex slony setup. Notice that node 3 has node 2 as its provider, not node 1:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo/scripts$ ./slony_migrator.pl -db pagila1 -H myfreebsd
Slony version: 1.2.16
psql version: 8.3
Postgres version: 8.3.7
Slony schema: _pagila
Local node: 1
SET 1: All pagila tables
* Master node: 1  Active: Yes  PID: 3764  Comment: &quot;Cluster node 1&quot;
  (dbname=pagila1 host=myfreebsd  user=postgres)
  ** Slave node:  2  Active: Yes  Forward: Yes  Provider:  1  Comment: &quot;Cluster node 2&quot;
     (dbname=pagila2 host=myfreebsd2 user=postgres)
  ** Slave node:  3  Active:  No  Forward: Yes  Provider:  2  Comment: &quot;Cluster node 3&quot;
     (dbname=pagila3 host=myfreebsd2 user=postgres)
  ** Slave node:  4  Active: Yes  Forward: Yes  Provider:  1  Comment: &quot;Cluster node 4&quot;
     (dbname=pagila4 host=myfreebsd  user=postgres)
&lt;/pre&gt;
&lt;p&gt;This is a simple way to get an idea of how a Slony cluster is organized. Again, we can get all this without downtime or any impact on the Slony cluster.&lt;/p&gt;
&lt;h2&gt;Creating Slonik Scripts Automatically&lt;/h2&gt;
&lt;p&gt;Slony gets its configuration entirely through scripts passed to an application called Slonik, which writes configuration entries into a Slony schema within a replicated database. At least as far as I know, however, Slony doesn't provide a way to regenerate those scripts based on the contents of that schema. The slony_migrator.pl script will do that for you with the --slonik option. For example, here is the Slonik script it generates for the simple configuration:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo/scripts$ ./slony_migrator.pl -db pagila1 -H myfreebsd --slonik
CLUSTER NAME = pagila;
NODE 1 ADMIN CONNINFO = 'dbname=pagila1 host=myfreebsd user=postgres';
NODE 2 ADMIN CONNINFO = 'dbname=pagila2 host=myfreebsd2 user=postgres';
INIT CLUSTER (ID = 1, COMMENT = 'Cluster node 1');
STORE NODE (ID = 2, EVENT NODE = 1, COMMENT = 'Node 2');
STORE PATH (SERVER = 1, CLIENT = 2, CONNINFO = 'dbname=pagila1 host=myfreebsd user=postgres', CONNRETRY = 10);
STORE PATH (SERVER = 2, CLIENT = 1, CONNINFO = 'dbname=pagila2 host=myfreebsd2 user=postgres', CONNRETRY = 10);
ECHO 'Please start up replication nodes here';
TRY {
    CREATE SET (ID = 1, ORIGIN = 1, COMMENT = 'All pagila tables');
} ON ERROR {
    EXIT -1;
}
SET ADD TABLE (ID = 6, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.customer', KEY = 'customer_pkey', COMMENT = 'public.customer');
SET ADD TABLE (ID = 11, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.language', KEY = 'language_pkey', COMMENT = 'public.language');
--- snip ---
SET ADD SEQUENCE (ID = 13, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.store_store_id_seq', COMMENT = 'public.store_store_id_seq');
SET ADD SEQUENCE (ID = 10, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.payment_payment_id_seq', COMMENT = 'public.payment_payment_id_seq');
SET ADD SEQUENCE (ID = 5, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.country_country_id_seq', COMMENT = 'public.country_country_id_seq');
SUBSCRIBE SET (ID = 1, PROVIDER = 1, RECEIVER = 2, FORWARD = YES);
&lt;/pre&gt;
&lt;p&gt;The pagila database contains many tables and sequences, and I've removed the repetitive commands to tell Slony about all of them, for the sake of brevity, but in its original form, the code above would rebuild the simple Slony cluster exactly, and can be very useful for getting an idea of how an otherwise unknown cluster is configured. I won't promise the Slonik code is ideal, but it does recreate a working cluster. The more complex Slonik output is very similar, differing only in how the sets are subscribed. Here I'll show only the major differences, which are the commands required to create the more complex Slony subscription scheme. In the downloadable script package I mentioned above, this subscription code is somewhat more complex, specifically because Slony won't let you subscribe node 3 to updates from node 2 until node 2 is fully subscribed itself. The slony_migrator.pl script isn't smart enough on its own to add necessary WAIT FOR EVENT Slonik commands, but it does get most of the code right, and, importantly, creates the subscriptions in the proper order.&lt;/p&gt;
&lt;pre&gt;
SET ADD SEQUENCE (ID = 10, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.payment_payment_id_seq', COMMENT = 'public.payment_payment_id_seq');
SET ADD SEQUENCE (ID = 5, ORIGIN = 1, SET ID = 1, FULLY QUALIFIED NAME = 'public.country_country_id_seq', COMMENT = 'public.country_country_id_seq');
SUBSCRIBE SET (ID = 1, PROVIDER = 1, RECEIVER = 4, FORWARD = YES);
SUBSCRIBE SET (ID = 1, PROVIDER = 1, RECEIVER = 2, FORWARD = YES);
SUBSCRIBE SET (ID = 1, PROVIDER = 2, RECEIVER = 3, FORWARD = YES);
&lt;/pre&gt;
&lt;h2&gt;Migrating Slony Clusters to Bucardo&lt;/h2&gt;
&lt;p&gt;The final slony_migrator.pl option will create a set of bucardo_ctl commands to create a Bucardo cluster to match an existing Slony setup. Although Bucardo can be configured by directly modifying its configuration database, a great deal of work of late has gone into making configuration easier through the bucardo_ctl program. Here's the output from slony_migrator.pl on the simple Slony cluster. Note the --bucardo command-line option, which invokes this function:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo/scripts$ ./slony_migrator.pl -db pagila1 -H myfreebsd --bucardo
./bucardo_ctl add db pagila_1 dbname=pagila1  host=myfreebsd user=postgres
./bucardo_ctl add db pagila_2 dbname=pagila2  host=myfreebsd2 user=postgres
./bucardo_ctl add table public.customer db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.language db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.store db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.category db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.film db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
--- snip ---
./bucardo_ctl add sequence public.city_city_id_seq db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add sequence public.store_store_id_seq db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add sequence public.payment_payment_id_seq db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add sequence public.country_country_id_seq db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add sync pagila_set1_node1_to_node2 source=pagila_node1_set1 targetdb=pagila_2 type=pushdelta
&lt;/pre&gt;
&lt;p&gt;The Bucardo model of a replication system differs from Slony, but the two match fairly closely, especially for a simple scenario like this one. But slony_migrator.pl will work for the more complex Slony example I've been using, shown here:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo/scripts$ ./slony_migrator.pl -db pagila1 -H myfreebsd --bucardo
./bucardo_ctl add db pagila_1 dbname=pagila1  host=myfreebsd user=postgres
./bucardo_ctl add db pagila_4 dbname=pagila4  host=myfreebsd user=postgres
./bucardo_ctl add db pagila_3 dbname=pagila3  host=myfreebsd2 user=postgres
./bucardo_ctl add db pagila_2 dbname=pagila2  host=myfreebsd2 user=postgres
./bucardo_ctl add table public.customer db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.language db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.store db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
--- snip ---
./bucardo_ctl add sequence public.payment_payment_id_seq db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add sequence public.country_country_id_seq db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add sync pagila_set1_node1_to_node4 source=pagila_node1_set1 targetdb=pagila_4 type=pushdelta
./bucardo_ctl add sync pagila_set1_node1_to_node2 source=pagila_node1_set1 targetdb=pagila_2 type=pushdelta target_makedelta=on
./bucardo_ctl add table public.customer db=pagila_2 ping=true standard_conflict=source herd=pagila_node2_set1
./bucardo_ctl add table public.language db=pagila_2 ping=true standard_conflict=source herd=pagila_node2_set1
./bucardo_ctl add table public.store db=pagila_2 ping=true standard_conflict=source herd=pagila_node2_set1
--- snip ---
./bucardo_ctl add sequence public.store_store_id_seq db=pagila_2 ping=true standard_conflict=source herd=pagila_node2_set1
./bucardo_ctl add sequence public.payment_payment_id_seq db=pagila_2 ping=true standard_conflict=source herd=pagila_node2_set1
./bucardo_ctl add sequence public.country_country_id_seq db=pagila_2 ping=true standard_conflict=source herd=pagila_node2_set1
./bucardo_ctl add sync pagila_set1_node2_to_node3 source=pagila_node2_set1 targetdb=pagila_3 type=pushdelta
&lt;/pre&gt;
&lt;p&gt;I mentioned the Bucardo data model differs from that of Slony. Slony contains a set of tables and sequences in a &quot;set&quot;, and that Slony set remains a distinct object on all databases where those objects are found. Bucardo, on the other hand, has a concept of a &quot;sync&quot;, which is a replication job from one database to one or more slaves (here I'm talking only about master-&gt;slave syncs, and ignoring for purposes of this post Bucardo's ability to do multi-master replication). This makes the setup slightly different for the more complex Slony scenario, in that whereas Slony has one set and different subscriptions, in Bucardo I need to define the tables and sequences involved in each of three syncs: one from node 1 to node 2, one from node 1 to node 4, and one from node 2 to node 3. I also need to turn on Bucardo's &quot;makedelta&quot; option for the node 1 -&amp;gt; node 2 sync, which is the Bucardo equivalent of the Slony FORWARD subscription option.&lt;/p&gt;
&lt;h2&gt;Migrating from Slony to Bucardo&lt;/h2&gt;
This post is getting long, but for the sake of demonstration let's show a migration from Slony to Bucardo, using the more complex Slony example. First, I'll create a blank database, and install Bucardo in it:
&lt;pre&gt;
josh@eddie:~/devel/bucardo$ createdb bucardo
josh@eddie:~/devel/bucardo$ ./bucardo_ctl install
This will install the bucardo database into an existing Postgres cluster.
Postgres must have been compiled with Perl support,
and you must connect as a superuser

We will create a new superuser named 'bucardo',
and make it the owner of a new database named 'bucardo'

Current connection settings:
1. Host:          /tmp
2. Port:          5432
3. User:          postgres
4. Database:      postgres
5. PID directory: /var/run/bucardo
Enter a number to change it, P to proceed, or Q to quit: 
&lt;/pre&gt;
&lt;p&gt;I'll make the necessary configuration changes, and run the installation by following the simple menu.&lt;/p&gt;
&lt;pre&gt;
Current connection settings:
1. Host:          /tmp
2. Port:          5432
3. User:          postgres
4. Database:      bucardo
5. PID directory: /home/josh/devel/bucardo/pid
Enter a number to change it, P to proceed, or Q to quit: p

Postgres version is: 8.3
Attempting to create and populate the bucardo database and schema
Database creation is complete

Connecting to database 'bucardo' as user 'bucardo'
Updated configuration setting &quot;piddir&quot;
Installation is now complete.

If you see any unexpected errors above, please report them to bucardo-general@bucardo.org

You should probably check over the configuration variables next, by running:
./bucardo_ctl show all
Change any setting by using: ./bucardo_ctl set foo=bar
&lt;/pre&gt;
&lt;p&gt;Now I'll use slony_migrator.pl to get a set of bucardo_ctl scripts to build my Bucardo cluster:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo/scripts$ ./slony_migrator.pl -db pagila1 -H myfreebsd --bucardo &gt; pagila-slony2bucardo.sh
josh@eddie:~/devel/bucardo/scripts$ head pagila-slony2bucardo.sh 
./bucardo_ctl add db pagila_1 dbname=pagila1  host=myfreebsd user=postgres
./bucardo_ctl add db pagila_4 dbname=pagila4  host=myfreebsd user=postgres
./bucardo_ctl add db pagila_3 dbname=pagila3  host=myfreebsd2 user=postgres
./bucardo_ctl add db pagila_2 dbname=pagila2  host=myfreebsd2 user=postgres
./bucardo_ctl add table public.customer db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.language db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.store db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.category db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.film db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
./bucardo_ctl add table public.film_category db=pagila_1 ping=true standard_conflict=source herd=pagila_node1_set1
&lt;/pre&gt;
&lt;p&gt;I'll run the script...&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo$ sh scripts/pagila-slony2bucardo.sh
Added database &quot;pagila_1&quot;   
Added database &quot;pagila_4&quot;   
Added database &quot;pagila_3&quot;   
Added database &quot;pagila_2&quot;   
Created herd &quot;pagila_node1_set1&quot;
Added table &quot;public.customer&quot;
Added table &quot;public.language&quot;
Added table &quot;public.store&quot;
--- snip ---
Added sequence &quot;public.store_store_id_seq&quot;
Added sequence &quot;public.payment_payment_id_seq&quot;
Added sequence &quot;public.country_country_id_seq&quot;
Added sync &quot;pagila_set1_node1_to_node4&quot;
Added sync &quot;pagila_set1_node1_to_node2&quot;
Created herd &quot;pagila_node2_set1&quot;
Added table &quot;public.customer&quot;
Added table &quot;public.language&quot;
Added table &quot;public.store&quot;
--- snip ---
Added sequence &quot;public.store_store_id_seq&quot;
Added sequence &quot;public.payment_payment_id_seq&quot;
Added sequence &quot;public.country_country_id_seq&quot;
Added sync &quot;pagila_set1_node2_to_node3&quot;
&lt;/pre&gt;
&lt;p&gt;Now all that's left is to shut down Slony (I just use the &quot;pkill slon&quot; command on each database server), start Bucardo, and, eventually, remove the Slony schemas. Note that Bucardo runs only on one machine (which in this case isn't either of the database servers I'm using for this demonstration -- Bucardo can run effectively anywhere you want).&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo$ ./bucardo_ctl start
Checking for existing processes
Removing /home/josh/devel/bucardo/pid/fullstopbucardo
Starting Bucardo
josh@eddie:~/devel/bucardo$ tail -f log.bucardo 
[Mon Feb  1 21:45:27 2010]  KID Setting sequence public.actor_actor_id_seq to value of 202, is_called is 1
[Mon Feb  1 21:45:27 2010]  KID Setting sequence public.city_city_id_seq to value of 600, is_called is 1
[Mon Feb  1 21:45:27 2010]  KID Setting sequence public.store_store_id_seq to value of 2, is_called is 1
[Mon Feb  1 21:45:27 2010]  KID Setting sequence public.payment_payment_id_seq to value of 32098, is_called is 1
[Mon Feb  1 21:45:27 2010]  KID Setting sequence public.country_country_id_seq to value of 109, is_called is 1
[Mon Feb  1 21:45:27 2010]  KID Total delta count: 0
[Mon Feb  1 21:45:27 2010]  CTL Got notice &quot;bucardo_syncdone_pagila_set1_node1_to_node2_pagila_2&quot; from 22961
[Mon Feb  1 21:45:27 2010]  CTL Sent notice &quot;bucardo_syncdone_pagila_set1_node1_to_node2&quot;
[Mon Feb  1 21:45:27 2010]  CTL Got notice &quot;bucardo_syncdone_pagila_set1_node1_to_node4_pagila_4&quot; from 22962
[Mon Feb  1 21:45:27 2010]  CTL Sent notice &quot;bucardo_syncdone_pagila_set1_node1_to_node4&quot;
&lt;/pre&gt;
&lt;p&gt;Based on those logs, it looks like everything's running fine, but just to make sure, I'll use bucardo_ctl's &quot;list syncs&quot; and &quot;status&quot; commands:&lt;/p&gt;
&lt;pre&gt;
josh@eddie:~/devel/bucardo$ ./bucardo_ctl list syncs
Sync: pagila_set1_node1_to_node2  (pushdelta)  pagila_node1_set1 =&gt;  pagila_2  (Active)
Sync: pagila_set1_node1_to_node4  (pushdelta)  pagila_node1_set1 =&gt;  pagila_4  (Active)
Sync: pagila_set1_node2_to_node3  (pushdelta)  pagila_node2_set1 =&gt;  pagila_3  (Active)

josh@eddie:~/devel/bucardo$ ./bucardo_ctl status
Days back: 3  User: bucardo  Database: bucardo  Host: /tmp  PID of Bucardo MCP: 22936
Name                       Type  State PID   Last_good Time  I/U/D Last_bad Time
==========================+=====+=====+=====+=========+=====+=====+========+====
pagila_set1_node1_to_node2| P   |idle |22952|52s      |0s   |0/0/0|unknown |    
pagila_set1_node1_to_node4| P   |idle |22953|52s      |0s   |0/0/0|unknown |    
pagila_set1_node2_to_node3| P   |idle |22954|52s      |0s   |0/0/0|unknown |    
&lt;/pre&gt;
&lt;p&gt;Everything looks good. Before I test that data are really replicated correctly, I'll issue the a &quot;DROP SCHEMA _pagila CASCADE&quot; command in each database, which I can do while Bucardo's running. If this were a production system, the best strategy, to avoid things getting replicated twice) would be to stop all applications, stop Slony, start Bucardo, and start the applications, though because Slony and Bucardo both replicate rows using primary keys, doing otherwise wouldn't cause duplicated data.&lt;/p&gt;
&lt;p&gt;Finally, I'll tail the Bucardo logs while inserting rows in the pagila1 database, to see what happens. These rows tell me it's working:&lt;/p&gt;
&lt;pre&gt;
[Mon Feb  1 21:55:42 2010]  KID Setting sequence public.payment_payment_id_seq to value of 32098, is_called is 1
[Mon Feb  1 21:55:42 2010]  KID Setting sequence public.inventory_inventory_id_seq to value of 4581, is_called is 1
[Mon Feb  1 21:55:42 2010]  KID Setting sequence public.country_country_id_seq to value of 109, is_called is 1
[Mon Feb  1 21:55:42 2010]  KID Total delta count: 1
[Mon Feb  1 21:55:42 2010]  KID Deleting rows from public.actor
[Mon Feb  1 21:55:42 2010]  KID Begin COPY to public.actor
[Mon Feb  1 21:55:42 2010]  KID End COPY to public.actor
[Mon Feb  1 21:55:42 2010]  KID Pushdelta counts: deletes=0 inserts=1
[Mon Feb  1 21:55:42 2010]  KID Updating bucardo_track for public.actor on pagila_1
...
[Mon Feb  1 21:55:43 2010]  CTL Got notice &quot;bucardo_syncdone_pagila_set1_node1_to_node4_pagila_4&quot; from 22962
[Mon Feb  1 21:55:43 2010]  CTL Sent notice &quot;bucardo_syncdone_pagila_set1_node1_to_node4&quot;
[Mon Feb  1 21:55:43 2010]  CTL Got notice &quot;bucardo_syncdone_pagila_set1_node1_to_node2_pagila_2&quot; from 22961
[Mon Feb  1 21:55:43 2010]  CTL Sent notice &quot;bucardo_syncdone_pagila_set1_node1_to_node2&quot;
&lt;/pre&gt;
&lt;p&gt;In this case I need to &quot;kick&quot; the node 2 -&gt; node 3 sync to get it to replicate, but I could configure the sync with a timeout so that happened automatically. Once I do that, I get log messages for it as well.&lt;/p&gt;
&lt;pre&gt;
[Mon Feb  1 22:00:34 2010]  CTL Got notice &quot;bucardo_syncdone_pagila_set1_node2_to_node3_pagila_3&quot; from 22963
[Mon Feb  1 22:00:34 2010]  CTL Sent notice &quot;bucardo_syncdone_pagila_set1_node2_to_node3&quot;
&lt;/pre&gt;
&lt;p&gt;Please consider giving slony_migrator.pl a try. I'd be glad to hear how it works out.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-5147266616975447728?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 02 Feb 2010 09:19:35 +0000</pubDate>
	<author>noreply@blogger.com (Joshua Tolley)</author>
</item>
<item>
	<title>Hubert Lubaczewski: Waiting for 9.0 – table and index sizes</title>
	<guid>http://www.depesz.com/index.php/2010/02/02/waiting-for-9-0-table-and-index-sizes/</guid>
	<link>http://www.depesz.com/index.php/2010/02/02/waiting-for-9-0-table-and-index-sizes/</link>
	<description>On 19th of January Tom Lane committed really brilliant patch:
Log Message:
-----------
Add pg_table_size() and pg_indexes_size() to provide more user-friendly
wrappers around the pg_relation_size() function.
&amp;#160;
Bernd Helmle, reviewed by Greg Smith

Why is it brilliant? Because I&amp;#8217;m lazy. And I think it&amp;#8217;s a virtue, and not flaw.
Let&amp;#8217;s consider this example:
create table x (
    id serial primary key,
 [...]</description>
	<pubDate>Mon, 01 Feb 2010 22:33:19 +0000</pubDate>
</item>
<item>
	<title>Robert Gravsjö: Sun Oracle PostgreSQL</title>
	<guid>http://postgresql.blogg.se/2010/february/sun-oracle-postgresql.html</guid>
	<link>http://postgresql.blogg.se/2010/february/sun-oracle-postgresql.html</link>
	<description>I really don't know if this is funny or sad:</description>
	<pubDate>Mon, 01 Feb 2010 16:35:33 +0000</pubDate>
</item>
<item>
	<title>David Fetter: Adding Only New Rows (INSERT IGNORE, Done Right)</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/48-Adding-Only-New-Rows-INSERT-IGNORE,-Done-Right.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/48-Adding-Only-New-Rows-INSERT-IGNORE,-Done-Right.html</link>
	<description>Let's say you have a table and a data set, and would like to add only those rows in your data set that aren't already in the table.  There are hard ways, but here's an easy one. &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/48-Adding-Only-New-Rows-INSERT-IGNORE,-Done-Right.html#extended&quot;&gt;Continue reading &quot;Adding Only New Rows (INSERT IGNORE, Done Right)&quot;&lt;/a&gt;</description>
	<pubDate>Mon, 01 Feb 2010 03:04:08 +0000</pubDate>
	<author>nospam@example.com (David Fetter)</author>
</item>
<item>
	<title>Hubert Lubaczewski: Waiting for 9.0 – Streaming replication</title>
	<guid>http://www.depesz.com/index.php/2010/02/01/waiting-for-9-0-streaming-replication/</guid>
	<link>http://www.depesz.com/index.php/2010/02/01/waiting-for-9-0-streaming-replication/</link>
	<description>The BIG feature. The feature that made PostgreSQL leap from 8.4 to 9.0. Patch was written by Fujii Masao, and committed by Heikki Linnakangas on 15th of January 2010:
Log Message:
-----------
Introduce Streaming Replication.
&amp;#160;
This includes two new kinds of postmaster processes, walsenders and
walreceiver. Walreceiver is responsible for connecting to the primary server
and streaming WAL to disk, while [...]</description>
	<pubDate>Sun, 31 Jan 2010 23:49:31 +0000</pubDate>
</item>
<item>
	<title>Peter Eisentraut: Going ...</title>
	<guid>http://petereisentraut.blogspot.com/2010/01/going.html</guid>
	<link>http://petereisentraut.blogspot.com/2010/01/going.html</link>
	<description>&lt;a href=&quot;http://www.fosdem.org&quot;&gt;&lt;img src=&quot;http://www.fosdem.org/promo/going-to&quot; alt=&quot;I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See you there!  Or maybe even &lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/peter+eisentraut&quot;&gt;there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Wait ... I have the last slot on Saturday and the first slot on Sunday?!?  Great! :^)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5541296000399974369-7767398226196944039?l=petereisentraut.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 31 Jan 2010 23:33:13 +0000</pubDate>
	<author>peter@eisentraut.org (Peter Eisentraut)</author>
</item>
<item>
	<title>Endpoint Team: PostgreSQL tip: using pg_dump to extract a single function</title>
	<guid>http://blog.endpoint.com/2010/01/postgresql-tip-using-pgdump-to-extract.html</guid>
	<link>http://blog.endpoint.com/2010/01/postgresql-tip-using-pgdump-to-extract.html</link>
	<description>&lt;p&gt;A common task that comes up in PostgreSQL is the need to dump/edit a specific function.  While ideally, you're using DDL files and version control (hello, git!) to manage your schema, you don't always have the luxury of working in such a controlled environment.  Recent versions of &lt;tt&gt;psql&lt;/tt&gt; have the &lt;tt&gt;\ef&lt;/tt&gt; command to edit a function from within your favorite editor, but this is available from version 8.4 onward only.&lt;/p&gt;

&lt;p&gt;An alternate approach is to use the following invocation:&lt;/p&gt;

&lt;pre&gt;
  pg_dump -Fc -s | pg_restore -P 'funcname(args)'
&lt;/pre&gt;

&lt;p&gt;The &lt;tt&gt;-s&lt;/tt&gt; flag is the short form of &lt;tt&gt;--schema-only&lt;/tt&gt;; i.e., we don't care about wasting time/space with the data.  &lt;tt&gt;-P&lt;/tt&gt; tells pg_restore to extract the function with the following signature.&lt;/p&gt;

&lt;p&gt;As always, there are some caveats: the function name must be spelled out explicitly using the full types as they occur in the dump's custom format (i.e., you must use &lt;tt&gt;'foo_func(integer)'&lt;/tt&gt; instead of &lt;tt&gt;'foo_func(int)'&lt;/tt&gt;).  You can always see a list of all of the available functions by using the command:&lt;/p&gt;

&lt;pre&gt;
  pg_dump -Fc -s | pg_restore -l | grep FUNCTION
&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-5111540487168236271?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 31 Jan 2010 22:19:48 +0000</pubDate>
	<author>david@endpoint.com (David Christensen)</author>
</item>
<item>
	<title>PostgreSQL Weekly News: PostgreSQL Weekly News January 31st 2010</title>
	<guid>http://www.postgresql.org/community/weeklynews/pwn20100131</guid>
	<link>http://www.postgresql.org/community/weeklynews/pwn20100131</link>
	<description>Google Summer of Code applications are due March 9, but don't wait
until then to get in touch with Selena Deckelman at selena AT
postgresql DOT org.</description>
	<pubDate>Sun, 31 Jan 2010 08:00:00 +0000</pubDate>
</item>
<item>
	<title>Andrew Dunstan: On the home stretch with buildfarm Git</title>
	<guid>http://people.planetpostgresql.org/andrew/index.php?/archives/58-On-the-home-stretch-with-buildfarm-Git.html</guid>
	<link>http://people.planetpostgresql.org/andrew/index.php?/archives/58-On-the-home-stretch-with-buildfarm-Git.html</link>
	<description>Today I made some small modifications to the buildfarm web app to support Git, and got a new buildfarm member &lt;a href=&quot;http://www.pgbuildfarm.org/cgi-bin/show_log.pl?nm=quoll&amp;amp;dt=2010-01-31%2003:40:49&quot;&gt;quoll&lt;/a&gt; working with the new client code I have developed for building from Git. There are some wrinkles to work out, and no doubt there will be some bugs to fix, but I'm quite happy with the progress. I hope to release the new client code in a week or two.&lt;br /&gt;
&lt;br /&gt;
One thing I have not been able to test (waiting on a new commit) is that the changed files list for git builds will point to commits on the git repository, like &lt;a href=&quot;http://git.postgresql.org/gitweb?p=postgresql.git;a=commit;h=8ffbcc81f9a9faaef2c2cd5990200e239c804816&quot;&gt;this&lt;/a&gt;. That will be a bit nicer than we've been able to do with CVS.</description>
	<pubDate>Sun, 31 Jan 2010 04:34:22 +0000</pubDate>
	<author>nospam@example.com (Andrew Dunstan)</author>
</item>
<item>
	<title>David Fetter: ORDER BY column_header</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/47-ORDER-BY-column_header.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/47-ORDER-BY-column_header.html</link>
	<description>Ever wondered why you can't &quot;just sort&quot; by column when you're looking at an HTML table? &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/47-ORDER-BY-column_header.html#extended&quot;&gt;Continue reading &quot;ORDER BY column_header&quot;&lt;/a&gt;</description>
	<pubDate>Sat, 30 Jan 2010 19:02:38 +0000</pubDate>
	<author>nospam@example.com (David Fetter)</author>
</item>
<item>
	<title>Benjamin Reed: For A Good Cause, Shave Here</title>
	<guid>http://www.raccoonfink.com/2010/01/for-a-good-cause-shave-here.html?utm_source=rss&amp;utm_medium=rss&amp;campaign=for_a_good_cause_shave_here</guid>
	<link>http://www.raccoonfink.com/2010/01/for-a-good-cause-shave-here.html?utm_source=rss&amp;utm_medium=rss&amp;campaign=for_a_good_cause_shave_here</link>
	<description>&lt;p&gt;
&lt;a href=&quot;https://www.stbaldricks.org/participants/RangerRick&quot;&gt;&lt;img src=&quot;http://gallery.raccoonfink.com/d/30632-1/mr-clean.png&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
For the first time, I am participating in a &lt;a href=&quot;https://www.stbaldricks.org/participants/RangerRick&quot;&gt;St. Baldrick's&lt;/a&gt; event for cancer research.  It's a great cause; I have family members and friends who are either battling with cancer, or are themselves survivors.
&lt;/p&gt;
&lt;p&gt;
My goal is to reach $1000 in donations towards cancer research through the St. Baldrick's Foundation.  If there's anything you can do to help, I would very much appreciate it, and there are many others out there who can benefit from your help.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://www.stbaldricks.org/participants/RangerRick&quot;&gt;Donate Here!&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.raccoonfink.com/2010/01/for-a-good-cause-shave-here.html#comments&quot; title=&quot;Comment on: For A Good Cause, Shave Here&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 29 Jan 2010 22:19:06 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Wanted: New Project Slogan</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_29_2010</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_29_2010</link>
	<description>&lt;p&gt;On Monday Josh Berkus &lt;a href=&quot;http://archives.postgresql.org/pgsql-advocacy/2010-01/msg00044.php&quot;&gt;requested&lt;/a&gt; suggestions for a new Postgres
slogan.  Our current slogan, &quot;The world's most advanced open source database&quot;, was chosen in the early years of the project to distinguish
ourselves from other open source databases, and it is easy to see why we should consider a change at this time.  The suggestions fit into
several categories, some serious, some humorous.  Continued discussion is taking place on the advocacy (&lt;a href=&quot;mailto:pgsql-advocacy@postgresql.org&quot;&gt;pgsql-advocacy@postgresql.org&lt;/a&gt;) email list.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_29_2010&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 29 Jan 2010 17:00:00 +0000</pubDate>
</item>
<item>
	<title>Selena Deckelmann: Why you should go to LCA 2011</title>
	<guid>http://www.chesnok.com/daily/2010/01/27/why-you-should-go-to-lca-2011/</guid>
	<link>http://www.chesnok.com/daily/2010/01/27/why-you-should-go-to-lca-2011/</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;a href=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/01/capsicum.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2010/01/capsicum-300x225.jpg&quot; alt=&quot;capsicum&quot; title=&quot;capsicum&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-1424&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;I returned from LCA 2010 on Sunday with an ecstatic grin, and tons of projects to work on for the rest of the year. I was lucky enough to have &lt;a href=&quot;http://endpoint.com/&quot;&gt;End Point&lt;/a&gt; send me to New Zealand! I knew a few of the organizers, and had high expectations. LCA totally surpassed them all.&lt;/p&gt;
&lt;p&gt;Next year, &lt;a href=&quot;http://followtheflow.org/&quot;&gt;LCA will be held in Brisbane, Australia&lt;/a&gt;. You should really go.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll break it down for you: &lt;/p&gt;
&lt;p&gt;* Content&lt;/p&gt;
&lt;p&gt;The talks were really good. People went out of their way to talk about the technical issues they are facing without sugar coating it, dumbing it down, or resorting to lists of features. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://thunk.org/tytso/blog/&quot;&gt;Ted Ts&amp;#8217;o&lt;/a&gt;&amp;#8217;s talk on &lt;a href=&quot;http://www.lca2010.org.nz/programme/schedule/view_talk/50291?day=wednesday&quot;&gt;EXT4 development&lt;/a&gt; was amazing in this regard. I came thinking that he&amp;#8217;d give a laundry list of features, how it differed from EXT3, when he thought they&amp;#8217;d be &amp;#8220;production ready&amp;#8221;. What I got instead was an incredibly detailed accounting of the failures in testing and systems analysis that filesystems developers had encountered over many, many years. The new development effort had its own fair share of bug creation, but they also found long standing bugs in EXT3. He went so far as to break down effort in terms of new feature creation, bug fixing and two other tasks (i wish I had a copy of the slides already!). Anyway, interesting talk, great advice for those who work with concurrency-sensitive applications (most of us these days) and very interesting case studies in failure. &lt;/p&gt;
&lt;p&gt;Paul Gunn, an engineer at &lt;a href=&quot;http://www.wetafx.co.nz/&quot;&gt;Weta Digital&lt;/a&gt;, gave a detailed talk on his experiences scaling their data centers. Much of the lessons there were fairly well understood by data center engineers (hot/cold aisles, raise the temperature to save some dollars!, don&amp;#8217;t cram stuff under the floor where air is supposed to flow!, use high ceilings to sink heat). It&amp;#8217;s always great to see companies sharing their practical experiences with developers. &lt;/p&gt;
&lt;p&gt;Another fun project I learned about was &lt;a href=&quot;http://www.osrg.net/sheepdog/&quot;&gt;Sheepdog&lt;/a&gt; &amp;#8211; an EBS replacement developed by a team from NTT. The whole project looked fantastic &amp;#8211; providing snapshot, cloning and thin provisioning, and a reasonable looking GUI. This could be a fundamental building block of free clouds.&lt;/p&gt;
&lt;p&gt;I also was inspired by &lt;a href=&quot;http://auxesis.github.com/cucumber-nagios/&quot;&gt;Cucumber-nagios&lt;/a&gt;, a relatively new project from Lindsay Holmwood. He and others have been talking about &amp;#8220;&lt;a href=&quot;http://holmwood.id.au/~lindsay/2009/11/09/behaviour-driven-infrastructure-through-cucumber/&quot;&gt;behavior driven infrastructure&lt;/a&gt;&amp;#8220;, a great bit of syntactic sugar on systems automation work that started with cfengine in the early &amp;#8217;90s. I look forward to playing around with these tools. And I really like that he leveraged nagios&amp;#8217; existing interfaces rather than inventing something new. This type of collaboration between projects is a breath of fresh air for sysadmins, who (if they&amp;#8217;re anything like me) struggle to make awesome new tools talk to the awesome old ones.&lt;/p&gt;
&lt;p&gt;I spent some time in an Arduino intro class, soldering and hacking on a temperature probe for a few hours. I ended up with a working temperature monitor and an appreciation for how easy to use the tools are.&lt;/p&gt;
&lt;p&gt;* Hallway Track&lt;/p&gt;
&lt;p&gt;There was a fantastic common area filled with people hacking on their talks, having conversation or maybe just hanging out to see what would happen next. IRC was full of hilarious chatter, and people connecting to see new babies (my god, so many people have had babies!).&lt;/p&gt;
&lt;p&gt;There were also some couches, and a nice courtyard that often filled up with people. The common spaces in a conference seem to determine how well people can connect once they&amp;#8217;re not just sitting in front of a speaker. &lt;/p&gt;
&lt;p&gt;Another convenient and wonderful aspect of the location was the food. Excellent restaurants at reasonable prices were within a 5 minute walk of the conference venue. This made impromptu coffee breaks and relaxed but productive lunches very easy and enjoyable. I really, really liked this.&lt;/p&gt;
&lt;p&gt;* Inspiration&lt;/p&gt;
&lt;p&gt;Three keynotes by Biella Coleman, Benjamin Mako Hill and Glyn Moody were inspirational and subversive. All three were rallying cries for a hacker mentality &amp;#8211; the drive to tweak, tinker, create and share. All three spoke to the pleasures and joys of software development. &lt;/p&gt;
&lt;p&gt;Biella Coleman brought up the origins of the Free Software Foundation, and even played a video of a very young Richard Stallman talking about his frustration with not being able to modify source code. She also discussed the responsibility leaders in free and open source have to be transparent in their management of their projects (and how we remind ourselves of that in amusing ways).&lt;/p&gt;
&lt;p&gt;Benjamin Mako Hill gave a rallying talk about &lt;a href=&quot;http://wiki.mako.cc/Antifeatures&quot;&gt;antifeatures&lt;/a&gt;, and how their existence is a competitive advantage for free and open source software. &lt;a href=&quot;http://pipka.org/blog/2010/01/20/linux-conf-au-2010-%e2%80%93-day-3-freedom-games-bruce-campbell/&quot;&gt;Pia Waugh gave a detailed description&lt;/a&gt; of the talk, and the categories of antifeatures &amp;#8211; protection money, market segmentation, securing monopolies and protecting copyrights. A memorable quote was &amp;#8220;I have yet to meet a free software DVD player that respects the unskippable DVD track.&amp;#8221; Mako reminds me that humor is the best medicine for something that&amp;#8217;s seriously broken.&lt;/p&gt;
&lt;p&gt;Glyn Moody went a slightly different route &amp;#8211; talking about how sharing and openness are leaking out into the rest of the world. The Human Genome Project and Project Gutenburg were two of several examples he used, and to briefly cast a glance at what was at stake if public ownership had not been achieved &amp;#8211; in particular with the Human Genome Project. He managed to convey a sense of urgency and importance that is often missing. &lt;/p&gt;
&lt;p&gt;What free software actually gets used for and why are critically important stories. We all need to get better at telling compelling stories.&lt;/p&gt;
&lt;p&gt;* Friendship&lt;/p&gt;
&lt;p&gt;Free software is built on friendships. Trust, willingness to make mistakes in front of each other, and a desire to build on top of others work to make something better are the traits I see among those who collaborate with each other. Building free software can be a painful process &amp;#8211; long nights, tedious bugs, no recognition for the work that went into it all. Conferences like LCA are a tremendous affirmation of the work that we all do.&lt;/p&gt;
&lt;p&gt;From the scripted get-togethers, to the spontaneous hackfests and anti-scripted gatherings (the un-professional networking session!), all events are attempts to connect to the other people who know what it&amp;#8217;s like to live inside of free software. And we relax around each other, make jokes and enjoy for a few days the knowledge that we&amp;#8217;re doing something really cool.&lt;/p&gt;
&lt;p&gt;I met so many people for whose time and attention I am incredibly grateful for. And, for those Kiwis who took me out for great food, shopping and long walks along the pier in the sunshine &amp;#8212; thank you so much for taking the time. I miss you all.&lt;/p&gt;
&lt;img src=&quot;http://www.chesnok.com/daily/?ak_action=api_record_view&amp;amp;id=1419&amp;amp;type=feed&quot; alt=&quot;&quot; /&gt;</description>
	<pubDate>Fri, 29 Jan 2010 00:16:50 +0000</pubDate>
</item>
<item>
	<title>Simon Riggs: 9.0 Replication Features</title>
	<guid>http://database-explorer.blogspot.com/2010/01/90-replication-features.html</guid>
	<link>http://database-explorer.blogspot.com/2010/01/90-replication-features.html</link>
	<description>We're getting close to deadline now for the next release of PostgreSQL.&lt;br /&gt;&lt;br /&gt;Tensions running high as usual.&lt;br /&gt;&lt;br /&gt;My concerns at this stage are always that we get some rounded features in before the doors close. It's always a shame to ship software exactly on time if that misses out on a few essential extras. Mind you without a hard deadline things do tend to slip for weeks and months on any project, not just PostgreSQL.&lt;br /&gt;&lt;br /&gt;We're all working hard on the various replication features while we still can.&lt;br /&gt;&lt;br /&gt;Greg Smith's been doing a great job improving pg_standby for use in file-based WAL shipping. I'm working on conflict resolution and other essential internals for Hot Standby. Hannu Krosing has been looking at improvements in Londiste replication, though that's not strictly tied to the release of PostgreSQL core.&lt;br /&gt;&lt;br /&gt;We'll get there.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/9053536529694784563-1830236284478012821?l=database-explorer.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 28 Jan 2010 21:17:00 +0000</pubDate>
	<author>noreply@blogger.com (Simon Riggs)</author>
</item>
<item>
	<title>Bruce Momjian: Postgres Is Hot In Philadelphia</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_5</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_5</link>
	<description>&lt;p&gt;I was approached in the fall about speaking at various Philadelphia computer user group meetings.  Now that I am home I have been able to
speak at several, and it is clear there is greatly increased interest in Postgres here in the Philadelphia area, and I bet in other cities
as well.  For example, in January/February, I am speaking at:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Philadelphia area Linux User Group (PLUG) - North
  &lt;/li&gt;&lt;li&gt;Philadelphia area Linux User Group (PLUG) - West
  &lt;/li&gt;&lt;li&gt;The Mathlab at Drexel University
  &lt;/li&gt;&lt;li&gt;A Drexel University class
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_5&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 28 Jan 2010 17:00:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Threats to Postgres</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_4</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_4</link>
	<description>&lt;p&gt;I have always thought there were three possible threats to Postgres:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Control of the Internet domain name
  &lt;/li&gt;&lt;li&gt;Patent attacks
  &lt;/li&gt;&lt;li&gt;Hiring of volunteers to work on unrelated projects
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_4&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 28 Jan 2010 17:00:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Oops, Confusing Press Release</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_3</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_3</link>
	<description>&lt;p&gt;Last week &lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt; put out a
&lt;a href=&quot;http://www.prnewswire.com/news-releases/postgres-community-responds-to-eu-decision-to-approve-oracles-acquisition-of-mysql-82372882.html&quot;&gt;press
release&lt;/a&gt; with an inaccurate title.  Instead of being titled, &quot;EnterpriseDB Responds to EU Decision to Approve Oracle's Acquisition of
MySQL&quot;, it was unfortunately titled &quot;Postgres Community Responds ...&quot;.  This has the potential to confuse journalists into thinking that
Postgres development is not community controlled, and that's the last thing we want to happen at this point, with MySQL's problem in this
area starkly highlighted.  This dovetails well with the &lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_4_2010&quot;&gt;blog entry&lt;/a&gt; I
posted a few weeks ago titled, &quot;Don't Confuse Companies with Community&quot;.
&lt;/p&gt;</description>
	<pubDate>Thu, 28 Jan 2010 17:00:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: The Next Postgres Adoption Wave</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_2</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_2</link>
	<description>&lt;p&gt;Based on recent discussions, I am wondering if Postgres is poised for a significant adoption increase in the next year.  This is based on
a few events:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The upcoming Postgres 9.0 release, which I just blogged about
  &lt;/li&gt;&lt;li&gt;The unstable economy, which is causing many companies to rethink their software spending practices
  &lt;/li&gt;&lt;li&gt;The uncertainty surrounding other databases, both proprietary and open source
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_2&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 28 Jan 2010 17:00:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Postgres 9.0 Coming</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010</link>
	<description>&lt;p&gt;Last week Dave Page &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2010-01/msg02056.php&quot;&gt;announced&lt;/a&gt; that the next major release of
Postgres will be numbered 9.0, rather than 8.5 as previous expected.  This change was made because the next major PostgreSQL release will
include built-in log-streaming replication, and that has always been considered a feature worthy of increasing the first version number.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 28 Jan 2010 17:00:00 +0000</pubDate>
</item>
<item>
	<title>Endpoint Team: Slony: Cascading Subscriptions</title>
	<guid>http://blog.endpoint.com/2010/01/postgres-slony-cascading-subscription.html</guid>
	<link>http://blog.endpoint.com/2010/01/postgres-slony-cascading-subscription.html</link>
	<description>&lt;p&gt;
Sometime you run into a situation where you need to replicate one
dataset to many machines in multiple datacenters, with different costs
associated with sending to each (either real costs as in bandwidth, or
virtual costs as in the amount of time it takes to transmit to each
machine).  Defining a Slony cluster to handle this is easy, as you can
specify the topology and paths taken to replicate any changes.
&lt;/p&gt;

&lt;p&gt;
&lt;ul&gt;
Basic topology:
&lt;li&gt;Data center A, with machines A1, A2, A3, and A4.&lt;/li&gt;
&lt;li&gt;Data center B, with machines B1, B2, B3, and B4.&lt;/li&gt;
&lt;li&gt;Data center C, with machines C1, C2, C3, and C4.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_eLhk5Eevkf8/S2H5apImCRI/AAAAAAAAABk/24-aTF5wp50/s1600-h/slony_non_cascaded_pathways.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_eLhk5Eevkf8/S2H5apImCRI/AAAAAAAAABk/24-aTF5wp50/s400/slony_non_cascaded_pathways.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5431896861699344658&quot; /&gt;&lt;br /&gt;Figure 1: Non-cascaded slony replication nodes/pathways.
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
Node A1 is the master, which propagates its changes to all other
machines.  In the simple setup, A1 would push all of its changes to
each node, however if data centers B and C have high costs associated
with transfer to the nodes, you end up transferring 4x the data needed
for each data center.  (We are assuming that traffic on the local
subnet at each data center is cheap and fast.)
&lt;/p&gt;

&lt;p&gt;
The basic idea then, is to push the changes only once to each
datacenter, and let the &quot;master&quot; machine in the data center push the
changes out to the others in the data center.  This reduces traffic
from the master to each datacenter, plus removes any other associated
costs associated with pushing to every node.
&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_eLhk5Eevkf8/S2H56IeyG1I/AAAAAAAAABs/_LxqX_P0n5I/s1600-h/slony_cascaded_pathways.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_eLhk5Eevkf8/S2H56IeyG1I/AAAAAAAAABs/_LxqX_P0n5I/s400/slony_cascaded_pathways.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5431897402689854290&quot; /&gt;&lt;br /&gt;
Figure 2: Cascaded slony replication nodes/pathways&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
Let's look at an example configuration:
&lt;/p&gt;

&lt;pre&gt;
cluster_init.sh:
    #!/bin/bash

    # admin node definitions and other slony-related information are
    # stored in our preamble file.  This will define the $PREAMBLE
    # environment variable that contains basic information common to all
    # Slony-related scripts, such as slony cluster name, the nodes
    # present, and how to reach them to install slony, etc.

    . slony_preamble.sh

    slonik &amp;lt;&amp;lt;EOF
    $PREAMBLE

    init cluster ( id = 1, comment = 'A1' );

    store node (id=2,  comment = 'A2', event node=1);
    store node (id=3,  comment = 'A3', event node=1);
    store node (id=4,  comment = 'A4', event node=1);
    store node (id=5,  comment = 'B1', event node=1);
    store node (id=6,  comment = 'B2', event node=1);
    store node (id=7,  comment = 'B3', event node=1);
    store node (id=8,  comment = 'B4', event node=1);
    store node (id=9,  comment = 'C1', event node=1);
    store node (id=10, comment = 'C2', event node=1);
    store node (id=11, comment = 'C3', event node=1);
    store node (id=12, comment = 'C4', event node=1);

    # pathways from A1 -&amp;gt; A2, A3, A4 and back
    store path (server = 1, client = 2, conninfo = 'dbname=data host=node2.datacenter-a.com');
    store path (server = 1, client = 3, conninfo = 'dbname=data host=node3.datacenter-a.com');
    store path (server = 1, client = 4, conninfo = 'dbname=data host=node4.datacenter-a.com');
    store path (server = 2, client = 1, conninfo = 'dbname=data host=node1.datacenter-a.com');
    store path (server = 3, client = 1, conninfo = 'dbname=data host=node1.datacenter-a.com');
    store path (server = 4, client = 1, conninfo = 'dbname=data host=node1.datacenter-a.com');

    # pathway from A1 -&amp;gt; B1 and back
    store path (server = 1, client = 5, conninfo = 'dbname=data host=node1.datacenter-b.com');
    store path (server = 5, client = 1, conninfo = 'dbname=data host=node1.datacenter-a.com');

    # pathways from B1 -&amp;gt; B2, B3, B4 and back
    store path (server = 5, client = 6, conninfo = 'dbname=data host=node2.datacenter-b.com');
    store path (server = 5, client = 7, conninfo = 'dbname=data host=node3.datacenter-b.com');
    store path (server = 5, client = 8, conninfo = 'dbname=data host=node4.datacenter-b.com');
    store path (server = 6, client = 5, conninfo = 'dbname=data host=node1.datacenter-b.com');
    store path (server = 7, client = 5, conninfo = 'dbname=data host=node1.datacenter-b.com');
    store path (server = 8, client = 5, conninfo = 'dbname=data host=node1.datacenter-b.com');

    # pathway from A1 -&amp;gt; C1 and back
    store path (server = 1, client = 9, conninfo = 'dbname=data host=node1.datacenter-c.com');
    store path (server = 9, client = 1, conninfo = 'dbname=data host=node1.datacenter-a.com');

    # pathways from C1 -&amp;gt; C2, C3, C4 and back
    store path (server = 9, client = 10, conninfo = 'dbname=data host=node2.datacenter-c.com');
    store path (server = 9, client = 11, conninfo = 'dbname=data host=node3.datacenter-c.com');
    store path (server = 9, client = 12, conninfo = 'dbname=data host=node4.datacenter-c.com');
    store path (server = 10, client = 9, conninfo = 'dbname=data host=node1.datacenter-c.com');
    store path (server = 11, client = 9, conninfo = 'dbname=data host=node1.datacenter-c.com');
    store path (server = 12, client = 9, conninfo = 'dbname=data host=node1.datacenter-c.com');

    EOF
&lt;/pre&gt;

&lt;p&gt;
As you can see in the initialization script, we're defining the basic
topology for the cluster.  We're defining each individual node, and
the paths that slony will use to communicate events and other status.
Since slony needs to communicate status both ways, we need to define
the paths for each node's edge both ways.  In particular, we've
defined pathways from A1 to each of the other A nodes, A1 to B1 and
C1, and B1 and C1 to each of their respective nodes.
&lt;/p&gt;
&lt;p&gt;
Now it's a matter of defining the replication sets and describing the
subscriptions for each.  We will use something like the following for
our script:
&lt;/p&gt;

&lt;pre&gt;
cluster_define_set1.sh:
    #!/bin/bash

    # reusing our standard cluster information
    . slony_preamble.sh

    slonik &amp;lt;&amp;lt;EOF
    $PREAMBLE

    create set ( id = 1, origin = 1, comment = 'set 1' );

    set add table ( set id = 1, origin = 1, id = 1, fully qualified name = 'public.table1');
    set add table ( set id = 1, origin = 1, id = 2, fully qualified name = 'public.table2');
    set add table ( set id = 1, origin = 1, id = 3, fully qualified name = 'public.table3');

    EOF
&lt;/pre&gt;

&lt;p&gt;
Here we've defined the tables that we want replicated from A1 to the
entire cluster; there is nothing specific to this particular scenario
that we need to consider.
&lt;/p&gt;

&lt;pre&gt;
cluster_subscribe_set1.sh:
    #!/bin/bash

    # reusing our standard cluster information
    . slony_preamble.sh

    slonik &amp;lt;&amp;lt;EOF
    $PREAMBLE

    # define our forwarding subscriptions (i.e., A1 -&gt; B1, C1)
    subscribe set ( id = 1, provider = 1, receiver = 5, forward = yes);
    subscribe set ( id = 1, provider = 1, receiver = 9, forward = yes);

    # define the subscriptions for each of the datacenter sets
    # A1 -&gt; A2, A3, A4
    subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
    subscribe set ( id = 1, provider = 1, receiver = 3, forward = no);
    subscribe set ( id = 1, provider = 1, receiver = 4, forward = no);

    # B1 -&gt; B2, B3, B4
    subscribe set ( id = 1, provider = 5, receiver = 6, forward = no);
    subscribe set ( id = 1, provider = 5, receiver = 7, forward = no);
    subscribe set ( id = 1, provider = 5, receiver = 8, forward = no);

    # C1 -&gt; C2, C3, C4
    subscribe set ( id = 1, provider = 9, receiver = 10, forward = no);
    subscribe set ( id = 1, provider = 9, receiver = 11, forward = no);
    subscribe set ( id = 1, provider = 9, receiver = 12, forward = no);

    EOF
&lt;/pre&gt;

&lt;p&gt;
The key points here are that you specify the provider nodes and the
receiver nodes to specify how the particular replication occurs.  For
the subscription to any cascade point (i.e., B1 and C1), you need to
have the &lt;tt&gt;'forward = yes'&lt;/tt&gt; parameter to ensure that the events properly
cascade to the sub-nodes.  In any of the other nodes' subscription,
you should set &lt;tt&gt;'forward = no'&lt;/tt&gt;.
&lt;/p&gt;

&lt;p&gt;
In actual deployment of this setup, you would want to wait for the
subscription from A1 -&amp;gt; B1 and A1 -&amp;gt; C1 to complete successfully
before subscribing the sub-nodes.  Additionally, this solution assumes
high availability between nodes and does not address failure of
particular machines; in particular, A1, B1, and C1 are key to
maintaining the full replication.
&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-1629868609494683884?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 28 Jan 2010 16:05:06 +0000</pubDate>
	<author>david@endpoint.com (David Christensen)</author>
</item>
<item>
	<title>Endpoint Team: Postgres: Hello git, goodbye CVS</title>
	<guid>http://blog.endpoint.com/2010/01/postgres-hello-git-goodbye-cvs.html</guid>
	<link>http://blog.endpoint.com/2010/01/postgres-hello-git-goodbye-cvs.html</link>
	<description>&lt;p&gt;It looks like 2010 *might* be the year that Postgres officially makes the jump to &lt;a href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt;. Currently, the project uses &lt;a href=&quot;http://www.nongnu.org/cvs/&quot;&gt;CVS&lt;/a&gt;, with a script that moves things to the now canonical Postgres git repo at &lt;a href=&quot;http://git.postgresql.org&quot;&gt;git.postgresql.org&lt;/a&gt;. This script has been causing problems, and is still continuing to do so, as CVS is not atomic. Once the project flips over, CVS will still be available, but CVS will be the slave and git the master, to put things in database terms. The conversion from git to CVS is trivial compared to the other way around, so there is no reason Postgres cannot continue to offer CVS access to the code for those unwilling or unable to use git.&lt;/p&gt;
&lt;p&gt;On that note, I'm happy to see that the number of developers and committers who are using git - and publicly stating their happiness with doing so - has grown sharply in the last couple of years. Peter Eisentraut (with some help from myself) set up git.postgresql.org in 2008, but interest at that time was not terribly high, and there was still a lingering question of whether git was really the replacement for CVS, or if it would be some other version control system. There is little doubt now that git is going to win. Not only for the Postgres project, but across the development world in general (both open and closed source).&lt;/p&gt;
&lt;p&gt;To drive the point home, Andrew has announced he is working on git integration with &lt;a href=&quot;http://buildfarm.postgresql.org/&quot;&gt;the Postgres build farm&lt;/a&gt;. Of course, I submitted a patch to do just that back in March 2008, but I was ahead of my time :). Besides, mine was a simple proof of concept, while it sounds like Andrew is actually going to do it &lt;a href=&quot;http://people.planetpostgresql.org/andrew/index.php?/archives/56-Back-to-the-buildfarm+git-future.html&quot;&gt;the right way&lt;/a&gt;. Go Andrew!&lt;/p&gt;
&lt;p&gt;Of all the projects I work on, the great majority are using git now. We've been using git at &lt;a href=&quot;http://endpoint.com&quot;&gt;End Point&lt;/a&gt; as our preferred VCS for both internal projects and client work for a while now, and are very happy with our choice. There is only one other project I work on besides Postgres that uses CVS, but it's a small project. I don't know of any other project of Postgres' size that is still using CVS (anyone know of any?). Even emacs &lt;a href=&quot;http://news.slashdot.org/story/09/12/28/0057231/GNU-Emacs-Switches-From-CVS-To-Bazaar&quot;&gt;recently switched away from CVS&lt;/a&gt;, although they went with &lt;a href=&quot;http://bazaar.canonical.com/en/&quot;&gt;bazaar&lt;/a&gt; instead of git for some reason. Subversion is still being used by a substantial minority of the projects I'm involved with, mostly due to the historical fact that there was a window of time in which CVS was showing its limitations, but subversion was the only viable option. Sure would be nice if perl.org would offer git for Perl modules, as they do for subversion currently (/hint). Finally, there are a few of my projects that use something else (mercurial, monotone, etc.). Overall, git accounts for the lion's share of all my projects, and I'm very happy about that. There is a very steep learning curve with git, but the effort is well worth it.&lt;/p&gt;
&lt;p&gt;If you want to try out git with the Postgres project, first start by installing git. Unfortunately, git is still new enough, and actively developed enough, that it may not be available on your distro's packaging system, or worse, the version available may be too old to be useful. Anything older than 1.5 should *not* be used, period, and 1.6 is highly preferred. I'd recommend taking the trouble to install from source if git is older than 1.6. Once installed, here's the steps to clone the Postgres repo.&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;git clone git://git.postgresql.org/git/postgresql.git postgres&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This step may take a while, as git is basically putting the entire Postgres project on your computer - history and all! It took me three and a half minutes to run, but your time may vary.&lt;/p&gt;
&lt;p&gt;Once that is done, you'll have a directory named &quot;postgres&quot;. Change to it, and you can now poking around in the code, just like CVS, but without all the ugly CVS directories. :)&lt;/p&gt;
&lt;p&gt;For more information, check out the &lt;a href=&quot;http://wiki.postgresql.org/wiki/Working_with_Git&quot;&gt;&quot;Working with git&quot;&lt;/a&gt; page on the Postgres wiki.&lt;/p&gt;
&lt;p&gt;Here's to 2010 being the year Postgres finally abandons CVS!&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7997313029981170997-3470920069346035582?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 28 Jan 2010 15:55:36 +0000</pubDate>
	<author>noreply@blogger.com (Greg Sabino Mullane)</author>
</item>
<item>
	<title>Robert Hodges: Tungsten 1.2.2 Release is Out - Faster, More Stable, More Fun</title>
	<guid>http://scale-out-blog.blogspot.com/2010/01/tungsten-122-release-is-out-faster-more.html</guid>
	<link>http://scale-out-blog.blogspot.com/2010/01/tungsten-122-release-is-out-faster-more.html</link>
	<description>Release 1.2.2 of Tungsten Clustering is available on &lt;a href=&quot;http://sourceforge.net/projects/tungsten/&quot;&gt;SourceForge&lt;/a&gt; as well as through the &lt;a href=&quot;http://www.continuent.com/&quot;&gt;Continuent website&lt;/a&gt;. &amp;nbsp;The release contains mostly bug fixes in the open source version but there are also two very significant improvements of interest to all users.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The manager and monitoring capabilities of Tungsten are completely integrated on the same group communications channel. &amp;nbsp;This fixes a number of problems that caused data sources not to show up properly in older versions. &amp;nbsp;&lt;/li&gt;&lt;li&gt;We are officially supporting a new Tungsten Connector capability for MySQL called pass-through mode, which allows us to proxy connections by transferring network blocks directly rather than translating native request protocol to JDBC calls. &amp;nbsp;Our tests show that it speeds up throughput by as much as 200% in some cases.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;The commercial version has additional features like PostgreSQL warm standby clustering, add-on rules to manage master virtual IP addresses and other niceties. &amp;nbsp; If you are serious about replication and clustering it is worth a look.&lt;br /&gt;&lt;br /&gt;This is a good time to give a couple of reminders for Tungsten users. &amp;nbsp;First, Tungsten is distributed as a single build that integrates replication, management, monitoring, and connectivity. &amp;nbsp; The old Tungsten Replicator and Myosotis builds are going away. &amp;nbsp; Second, we have &lt;a href=&quot;http://www.continuent.com/downloads/documentation&quot;&gt;a single set of docs&lt;/a&gt; on the Continuent website that covers both open source and commercial distributions. &lt;br /&gt;&lt;br /&gt;With that, enjoy the new release. &amp;nbsp;If you are using the open source edition, please post your experiences in &lt;a href=&quot;http://www.continuent.com/community/forum&quot;&gt;the Tungsten community forums&lt;/a&gt; or write a blog article. &amp;nbsp;We would love to hear from you.&lt;br /&gt;&lt;br /&gt;P.s., We have added Drizzle support thanks to &lt;a href=&quot;http://developian.blogspot.com/2009/10/replication-from-mysql-to-drizzle-using.html&quot;&gt;a patch from Marcus Eriksson&lt;/a&gt; but it's not in 1.2.2. &amp;nbsp;For that you need to build directly from the SVN trunk. &amp;nbsp;Drizzle support will be out in binary builds as part of Tungsten version 1.3.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/768233104244702633-6285892869366739459?l=scale-out-blog.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 28 Jan 2010 07:01:53 +0000</pubDate>
	<author>noreply@blogger.com (Robert Hodges)</author>
</item>
<item>
	<title>Andrew Dunstan: The END (block) is nigh.</title>
	<guid>http://people.planetpostgresql.org/andrew/index.php?/archives/57-The-END-block-is-nigh..html</guid>
	<link>http://people.planetpostgresql.org/andrew/index.php?/archives/57-The-END-block-is-nigh..html</link>
	<description>After a somewhat heated discussion, we seem to be approaching agreement on how to implement END{} blocks for PL/Perl. They will be done via callbacks registered using the on_proc_exit call. One significant use for this is to make PL/Perl profiling via Devel::NYTProf much less cumbersome.&lt;br /&gt;
&lt;br /&gt;
The accompanying on_perl_init setting feature is still causing some angst, but there seems to be a bit of light at the end of the tunnel. I'm hopeful we can get some progress here without causing too much distaste.&lt;br /&gt;
&lt;br /&gt;
I think the discussion has been instructive - when it has focused more on getting a way forward than on negativity it has been much more productive. There is often a tendency in our community to say &quot;no&quot;. I am as bad about it as anybody. But it's worth remembering that people ask for things for a reason, and if we are going to say &quot;no&quot; or be skeptical, we need to make sure that we are still trying to address their needs.</description>
	<pubDate>Thu, 28 Jan 2010 02:51:03 +0000</pubDate>
	<author>nospam@example.com (Andrew Dunstan)</author>
</item>
<item>
	<title>David Fetter: PL/Parrot Needs a Logo</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/46-PLParrot-Needs-a-Logo.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/46-PLParrot-Needs-a-Logo.html</link>
	<description>The PL/Parrot Project, long dormant, is shaking off its sleep.&lt;br /&gt;
&lt;br /&gt;
The virtual machine for dynamic languages meets the dynamicest of RDBMSs.  Good things are coming soon! &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/46-PLParrot-Needs-a-Logo.html#extended&quot;&gt;Continue reading &quot;PL/Parrot Needs a Logo&quot;&lt;/a&gt;</description>
	<pubDate>Tue, 26 Jan 2010 22:51:51 +0000</pubDate>
	<author>nospam@example.com (David Fetter)</author>
</item>
<item>
	<title>Peter Eisentraut: PostgreSQL: The Universal Database Management System</title>
	<guid>http://petereisentraut.blogspot.com/2010/01/postgresql-universal-database.html</guid>
	<link>http://petereisentraut.blogspot.com/2010/01/postgresql-universal-database.html</link>
	<description>I'm glad &lt;a href=&quot;http://archives.postgresql.org/pgsql-advocacy/2010-01/msg00044.php&quot;&gt;you asked&lt;/a&gt;, since I've been pondering this for a while.&amp;nbsp; $subject is my new project slogan.&amp;nbsp; Now I'm not sure whether we can actually use it, because a) it's stolen from Debian, and b) another (commercial, proprietary) database product already uses the &quot;universal database&quot; line.&lt;br /&gt;&lt;br /&gt;I have come to appreciate that the &quot;universality&quot; of a software proposition can be a killer feature.&amp;nbsp; For example, Debian GNU/Linux, the &quot;universal operating system&quot;, might not be the operating system that is the easiest to approach or use, but once you get to know it, the fact that it works well and &lt;i&gt;the same way&lt;/i&gt; on server, desktop, and embedded ensures that you never have to worry about what operating system to use for a particular task.&amp;nbsp; Or Python, it's perhaps not the most geeky nor the most enterprisy programming language, but you can use it for servers, GUIs, scripting, system administration, like few other languages.&amp;nbsp; It might as well be the &quot;universal programming language&quot;.&amp;nbsp; A lot of other software is not nearly universal, which means that whenever you move into a new area, you have to learn a lot of things from scratch and cannot easily apply and extend past experiences.&amp;nbsp; And often the results are then poor and expensive.&lt;br /&gt;&lt;br /&gt;The nice thing about PostgreSQL is that you never have to worry about whether to use it, because you can be pretty sure that it will fit the job.&amp;nbsp; Even if you don't care whether something is &quot;open source&quot; or &quot;most advanced&quot;.&amp;nbsp; But it will fit the job.&amp;nbsp; The only well-known exception is embedded databases, and frankly I think we should try to address that.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5541296000399974369-5566433218213577966?l=petereisentraut.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 26 Jan 2010 00:10:59 +0000</pubDate>
	<author>peter@eisentraut.org (Peter Eisentraut)</author>
</item>
<item>
	<title>LAPUG: SCALE 8X - Bird Of A Feather</title>
	<guid>http://pugs.postgresql.org/node/1612</guid>
	<link>http://pugs.postgresql.org/node/1612</link>
	<description>&lt;p&gt;Josh Berkus will deliver a presentation on &lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/release-8-5.html&quot;&gt;PostgreSQL Version 9.0&lt;/a&gt; during the &lt;a href=&quot;https://www.socallinuxexpo.org/scale8x/special-events/birds-feather&quot;&gt;Birds of a Feather&lt;/a&gt;” session at SCALE.  &lt;/p&gt;
&lt;p&gt;This is an excellent opportunity to learn about the exciting new features that are included in this new release and to meet other PostgreSQL users local to the Los Angeles area.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;EVENT:  &lt;a href=&quot;https://www.socallinuxexpo.org/scale8x/&quot;&gt;2010 SCALE 8X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;LOCATION:   &lt;a href=&quot;https://www.socallinuxexpo.org/scale8x/hotel-information&quot;&gt;Westin Hotel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Room:              La Guardia&lt;/p&gt;
&lt;p&gt;Time:                7:00 pm, Saturday February 20th          &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Inquiries for additional information can be sent to lapug@postgresql.org.&lt;/p&gt;</description>
	<pubDate>Mon, 25 Jan 2010 23:13:00 +0000</pubDate>
</item>
<item>
	<title>Joshua D. Drake: PostgreSQL Conference East: Early Bird registration is open, classes announced</title>
	<guid>http://www.commandprompt.com/blogs/joshua_drake/2010/01/postgresql_conference_east_early_bird_registration_is_open_classes_announced/</guid>
	<link>http://www.commandprompt.com/blogs/joshua_drake/2010/01/postgresql_conference_east_early_bird_registration_is_open_classes_announced/</link>
	<description>As everyone already knows, &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PostgreSQL Conference East&lt;/a&gt; is happening on March 25th through March 28th in Philadelphia. However, what is new is, &lt;a href=&quot;http://www.postgresql.us/purchase&quot;&gt;early bird registration is now open&lt;/a&gt; and we have confirmed the three classes that will be taught on Sunday the 28th. &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/2010/east/training/postgresql_administration&quot;&gt;PostgreSQL Administration&lt;/a&gt; by Bruce Momjian.
&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/2010/east/training/postgresql_performance_maintenance&quot;&gt;PostgreSQL Performance and Maintenance&lt;/a&gt; by Joshua D. Drake (yes me)
&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/2010/east/training/pitr_hs&quot;&gt;Point and Time Recovery and Hot Standby&lt;/a&gt; by Chander Ganesan.
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;The conference is shaping up to be the largest and most successful U.S. PostgreSQL Conference Yet. I hope you will join us. The &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;link to register&lt;/a&gt; can be found on the main &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PostgreSQL Conference site.&lt;/a&gt;</description>
	<pubDate>Mon, 25 Jan 2010 18:35:00 +0000</pubDate>
</item>
<item>
	<title>PostgreSQL Weekly News: PostgreSQL Weekly News January 24th 2010</title>
	<guid>http://www.postgresql.org/community/weeklynews/pwn20100124</guid>
	<link>http://www.postgresql.org/community/weeklynews/pwn20100124</link>
	<description>&quot;PostgreSQL: Das Praxisbuch&quot; by Thomas Pfeiffer and Andreas Wenk published.
&lt;a href=&quot;http://www.pg-praxisbuch.de&quot;&gt;http://www.pg-praxisbuch.de&lt;/a&gt;</description>
	<pubDate>Sun, 24 Jan 2010 08:00:00 +0000</pubDate>
</item>
<item>
	<title>Andrew Dunstan: Back to the buildfarm+git future</title>
	<guid>http://people.planetpostgresql.org/andrew/index.php?/archives/56-Back-to-the-buildfarm+git-future.html</guid>
	<link>http://people.planetpostgresql.org/andrew/index.php?/archives/56-Back-to-the-buildfarm+git-future.html</link>
	<description>At long last I have today returned to the task of getting the buildfarm to work with git. Actually, refactoring the code to remove most of the CVS-specific code from the main line is the big task in this. I don't want to have the code littered with code that tests the SCM type and takes action accordingly. Instead we'll have an scm object initialised with the right SCM type and method calls on the object. Once that is in place and working for CVS, implementing a new SCM object type for git will be comparatively simple. Unfortunately, the CVS-sprcific code is scattered all around, so it's proving to be a non-trivial task to hack it out.&lt;br /&gt;
&lt;br /&gt;
On a related note, I'm a bit concerned that every git repo clone carries a copy of the whole base repo in it. That means that each repo copy comes in around 234Mb right now, as opposed to 80Mb for a current checkout of the CVS HEAD branch. Now I have four buildfarm animals regularly building some 15 branches, so that adds up to around 3.5Gb of disk space, nearly a 300% increase. I have it available, but that's a heck of a requirement. I'm certainly going to run those members against a local mirror of the repository, just as I do now with CVS.&lt;br /&gt;
&lt;br /&gt;
I actually keep many more trees than this. I have a directory where I do development and committer work, and in there I have a pristine checkout of each stable branch that is alive, plus HEAD. For any non-trivial changes I create a copy of the relevant tree to work in. The reason for this is I'm often working on more than one thing at a time, and just cd'ing to the relevant directory makes switching from one task to another very easy. But if the trees become four times as big, that might start to become a bit impractical, and instead I'll have to start setting up my own local git branches. No doubt it's the way things are meant to be done, but it will take a bit of getting used to for me.</description>
	<pubDate>Sat, 23 Jan 2010 22:18:27 +0000</pubDate>
	<author>nospam@example.com (Andrew Dunstan)</author>
</item>
<item>
	<title>Dan Langille: Pentabarf - seeing the speakers</title>
	<guid>http://dan.langille.org/2010/01/23/pentabarf-seeing-the-speakers/</guid>
	<link>http://dan.langille.org/2010/01/23/pentabarf-seeing-the-speakers/</link>
	<description>Both BSDCan and PGCon use Pentabarf for accepting and reviewing proposals for talks.  An issue raised in 2009 highlighted the ability to see the speaker name when review the list of submissions.  It is a bit of very useful information.
This year, I&amp;#8217;ve found out that we can see that vital data.  Provided [...]</description>
	<pubDate>Sat, 23 Jan 2010 16:07:05 +0000</pubDate>
</item>
<item>
	<title>Dan Langille: “libcroco-0.6.so.3″ not found</title>
	<guid>http://dan.langille.org/2010/01/22/libcroco-06so3-not-found/</guid>
	<link>http://dan.langille.org/2010/01/22/libcroco-06so3-not-found/</link>
	<description>Seen this?

/libexec/ld-elf.so.1: Shared object &quot;libcroco-0.6.so.3&quot; not found, required by &quot;   msgfmt&quot;

Rebuild gettext.

portupgrade -f gettext

And try again
Port details, not relevant:

# less /var/db/ports/postgresql73/options
# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for postgresql-server-7.3.21_1
_OPTIONS_READ=postgresql-server-7.3.21_1
WITH_NLS=true
WITHOUT_PAM=true
WITHOUT_MIT_KRB5=true
WITHOUT_HEIMDAL_KRB5=true
WITHOUT_OPTIMIZED_CFLAGS=true
WITHOUT_LIBC_R=true
WITHOUT_TESTS=true
WITHOUT_DEBUG=true

The building errors:

[root@pg73 /usr/ports/databases/postgresql73-server]# ldd `which msgfmt `
/usr/local/bin/msgfmt:
        libgettextsrc-0.17.so =&gt; /usr/local/lib/libgettextsrc-0.17.so (0x800655000)
 [...]</description>
	<pubDate>Sat, 23 Jan 2010 01:20:06 +0000</pubDate>
</item>
<item>
	<title>PDXPUG: January Meeting recap</title>
	<guid>http://pugs.postgresql.org/node/1611</guid>
	<link>http://pugs.postgresql.org/node/1611</link>
	<description>&lt;p&gt;Meeting recap!&lt;/p&gt;
&lt;p&gt;John Naylor entertained a packed room at FreeGeek with stories from his time as a data manager with the Obama campaign.  Especially interesting to me was the way he pulled together and verified voter data from a number of sources.  I sure wish I'd known about the Geo::StreetAddress::US Perl module before I completed a similar project (albeit on a much smaller scale - several orders of magnitude smaller) for a local organization.&lt;/p&gt;
&lt;p&gt;Also:  we had bacon.  And donuts.&lt;/p&gt;
&lt;p&gt;See you next month for &quot;The Drama of a Fully Versioned Database in MySQL&quot; with Ben Hengst.&lt;/p&gt;</description>
	<pubDate>Sat, 23 Jan 2010 00:30:02 +0000</pubDate>
</item>
<item>
	<title>Shoaib Mir: shoaibmir</title>
	<guid>http://shoaibmir.wordpress.com/2010/01/23/using-pg_hba-d-folder-for-hba-rules/</guid>
	<link>http://shoaibmir.wordpress.com/2010/01/23/using-pg_hba-d-folder-for-hba-rules/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Its been quite a while since I did post something and that was due to a very busy schedule at work but got lucky today to get a few mins and sharing something I always wanted to write about.&lt;/p&gt;
&lt;p&gt;We got an environment at work where we have a quite a huge number of databases on each PostgreSQL development database server and it is because of the static images of the production DBs we need to create for QA and Dev most of the time. In such a scenario if we keep on adding rules to the pg_hba.conf file it can be a big mess with around 200-300 lines in there and thats a nightmare to manage for a DBA. &lt;/p&gt;
&lt;p&gt;Solution &amp;#8211; What we ended up doing for this was by having a folder pg_hba.d like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
pg_hba.conf&lt;br /&gt;
pg_hba.d&lt;br /&gt;
postgresql.conf&lt;br /&gt;
postmaster.opts&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;and under pg_hba.d folder:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
host1-dbuser1-trust.db&lt;br /&gt;
host2-dbuser2-md5.db&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The above two files then contain the list of databases that need to given access for those hosts.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
host1-dbuser1-trust.db:&lt;br /&gt;
db1&lt;br /&gt;
db2&lt;br /&gt;
db3&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This way you can have host files for each of your staging servers that are used by QA and then have a list of databases that need to be given access from those.&lt;/p&gt;
&lt;p&gt;Last step is adding details for using these pg_hba.d files, this can be done in pg_hba.conf file the following way:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
host    @pg_hba.d/host1-dbuser1-trust.db   dbuser1                       192.168.2.5/32            trust&lt;br /&gt;
host    @pg_hba.d/host2-dbuser2-trust.db   dbuser2                       192.168.2.6/32            md5&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This way instead of having the whole list of databases in pg_hba.conf file we now just have two entries and making it very easy to manage. When ever you need to give a new database access to those hosts just add it to the specific file for that host under pg_hba.d folder and reload the DB server.&lt;/p&gt;
&lt;p&gt;&amp;#8211;&lt;br /&gt;
Shoaib Mir&lt;br /&gt;
shoaibmir[@]gmail.com&lt;/p&gt;
  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/shoaibmir.wordpress.com/302/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/shoaibmir.wordpress.com/302/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/shoaibmir.wordpress.com/302/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/shoaibmir.wordpress.com/302/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/shoaibmir.wordpress.com/302/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/shoaibmir.wordpress.com/302/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/shoaibmir.wordpress.com/302/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/shoaibmir.wordpress.com/302/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/shoaibmir.wordpress.com/302/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/shoaibmir.wordpress.com/302/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=shoaibmir.wordpress.com&amp;amp;blog=6056447&amp;amp;post=302&amp;amp;subd=shoaibmir&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 23 Jan 2010 00:11:31 +0000</pubDate>
</item>
<item>
	<title>Benjamin Reed: KDE4 Progress</title>
	<guid>http://www.raccoonfink.com/2010/01/kde4-progress.html?utm_source=rss&amp;utm_medium=rss&amp;campaign=kde4_progress</guid>
	<link>http://www.raccoonfink.com/2010/01/kde4-progress.html?utm_source=rss&amp;utm_medium=rss&amp;campaign=kde4_progress</link>
	<description>&lt;p&gt;
I've been making good progress on getting &lt;a href=&quot;http://kde.org/announcements/announce-4.4-rc1.php&quot;&gt;KDE 4.4&lt;/a&gt; (release candidates) working.  It's been quite an interesting ride, in both a good and bad way.  =)
&lt;/p&gt;
&lt;p&gt;
First, there's the fun of 10.6 making it &lt;a href=&quot;http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=USING_FORK_WITHOUT_EXEC_IS_NOT_SUPPORTED_BY_FILE_MANAGER&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&quot;&gt;&lt;em&gt;even&lt;/em&gt; harder to have code that forks&lt;/a&gt; without it accidentally exploding on the CoreFoundation fork-without-exec prohibition.  I was able to solve this with a combination of fixes from macports' kdelibs4, and some of my own code which changes things to use low-level POSIX APIs instead of Qt APIs for some bounds-checking before execution.
&lt;/p&gt;
&lt;p&gt;
Next, there's the fun of Phonon.  KDE 4.4 requires a newer version of Phonon than what ships with Qt (even Qt 4.6).  On OSX it gets even hinkier, since the QuickTime plugin for Phonon requires private Qt headers, so the only sane way to build it is to build the Phonon included with Qt, rather than building it as a separate project.
&lt;/p&gt;
&lt;p&gt;
I ended up adapting &lt;a href=&quot;http://bazaar.launchpad.net/%7Ekubuntu-members/qt/ubuntu/files/head%3A/debian/patches/&quot;&gt;a patch the Kubuntu folks use&lt;/a&gt; to inject a modern Phonon into Qt 4.6.  In the process, I finally got around to learning my way around Git (and gitorious), and have set up &lt;a href=&quot;http://qt.gitorious.org/~rangerrick/qt/kde-qt-mac/commits/4.6.1-mac&quot;&gt;my own Qt branch&lt;/a&gt; which includes my (binary incompatible outside of Fink) patch to Qt to fix plugin-building, Phonon from kdesupport, the kde-qt (formerly qt-copy) changes, and my patches to Qt that splits OSX into two platforms, Q_OS_DARWIN (i.e. use raw UNIX APIs, no Core*), and Q_OS_MAC (standard Qt/Mac).
&lt;/p&gt;
&lt;p&gt;
Long story short, I'm getting there.  I've gotten about half of KDE 4.4 RC1 built and apparently running reasonably.  RC2 was just released to packagers, and I'm testing out my move to Qt 4.6.1 from 4.6.0, but once I get everything test-built on 10.6, I'll go validate everything on 10.4 and 10.5 (including making some &lt;a href=&quot;http://dbus.freedesktop.org/&quot;&gt;DBus&lt;/a&gt; fixes for 10.4).
&lt;/p&gt;
&lt;p&gt;
After that, the next thing to tackle is &lt;a href=&quot;http://www.mono-project.org/&quot;&gt;Mono&lt;/a&gt;, and then eventually I'll see if I can get KDE3 building/working on 10.6.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.raccoonfink.com/2010/01/kde4-progress.html#comments&quot; title=&quot;Comment on: KDE4 Progress&quot;&gt;Comments&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 22 Jan 2010 19:58:38 +0000</pubDate>
</item>
<item>
	<title>Devrim Gündüz: Yet another big move: 8.5-&gt;9.0</title>
	<guid>http://people.planetpostgresql.org/devrim/index.php?/archives/32-Yet-another-big-move-8.5-9.0.html</guid>
	<link>http://people.planetpostgresql.org/devrim/index.php?/archives/32-Yet-another-big-move-8.5-9.0.html</link>
	<description>I'll keep this short. Dave &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2010-01/msg02056.php&quot;&gt;announced&lt;/a&gt; that upcoming PostgreSQL release will be 9.0, not 8.5. Both Streaming Replication and Hot Standby is really another milestone at PostgreSQL project, like Windows port in 8.0.&lt;br /&gt;
&lt;br /&gt;
Thanks everyone who made this great release to turn into 9.0...</description>
	<pubDate>Thu, 21 Jan 2010 19:43:13 +0000</pubDate>
	<author>nospam@example.com (Devrim GUNDUZ)</author>
</item>
<item>
	<title>Josh Berkus: Sun and the Ten Ways</title>
	<guid>http://it.toolbox.com/blogs/database-soup/sun-and-the-ten-ways-36517?rss=1</guid>
	<link>http://it.toolbox.com/blogs/database-soup/sun-and-the-ten-ways-36517?rss=1</link>
	<description>My presentation of &quot;Ten Ways to Destroy Your Community&quot; on Monday, and even more so LWN's coverage of it, made it seem as if my presentation was entirely about Sun Microsystems and their mistakes.  This was not my intention; the mistakes in community relations I was talking about are universal to the sphere of corporate open source.</description>
	<pubDate>Thu, 21 Jan 2010 17:21:36 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: European Union Recognizes PostgreSQL</title>
	<guid>http://momjian.us/main/blogs/pgblog/2010.html#January_21_2010_2</guid>
	<link>http://momjian.us/main/blogs/pgblog/2010.html#January_21_2010_2</link>
	<description>&lt;p&gt;It seems the European Commission studying the Oracle purchase of Sun/MySQL has finally realized Postgres is a viable open source
alternative to MySQL and has &lt;a href=&quot;http://europa.eu/rapid/pressReleasesAction.do?reference=IP/10/40&quot;&gt;approved&lt;/a&gt; the purchase:
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_21_2010_2&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 21 Jan 2010 17:00:00 +0000</pubDate>
</item>

</channel>
</rss>
