<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>..::Planet PostgreSQL::..</title>
	<link rel="self" href="http://www.planetpostgresql.org/atom.xml"/>
	<link href="http://www.planetpostgresql.org/"/>
	<id>http://www.planetpostgresql.org/atom.xml</id>
	<updated>2010-03-11T02:46:14+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry>
		<title type="html">15 days... and it all begins, PostgreSQL Conference East</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/03/15_days_and_it_all_begins_postgresql_conference_east/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/03/15_days_and_it_all_begins_postgresql_conference_east/</id>
		<updated>2010-03-10T20:10:16+00:00</updated>
		<content type="html">As we continue the countdown to the largest community and user conference in PostgreSQL history I am reminded of all the great content we have had in the past. Today while I was reviewing the curriculum for the &lt;a href=&quot;http://http://www.postgresqlconference.org/2010/east/training/postgresql_performance_maintenance&quot;&gt;PostgreSQL Performance and Maintenance&lt;/a&gt; class, I came across this great talk by Bruce Momjian as a further example of the high quality information you will receive not only from the various trainings but also all the other (over 50!) sessions at &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PostgreSQL Conference East!&lt;/a&gt;&lt;p&gt;
&lt;div align=&quot;center&quot;&gt;Inside PostgreSQL Shared Memory: Bruce Momjian&lt;br /&gt;

&lt;/div&gt;&lt;/p&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2010-03-11T02:45:22+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PITR is not a PITA.</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/62-PITR-is-not-a-PITA..html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/62-guid.html</id>
		<updated>2010-03-10T18:30:07+00:00</updated>
		<content type="html">I have a client who runs a PITR warm standby for their main production database. A couple of time recently it has fallen over, due to factors beyond the control of Postgres. The first time a data drive ran out of space, and the second time (today) a tablespace was created on the master that referred to a directory that didn't exist on the standby. Fixing this was really easy. Just remove the problem (clear space, create directory) and restart the standby. I'm really quite impressed by how robust the whole thing is. It's the sort of robustness that makes Postgres a joy to work with.</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-03-10T22:30:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Free Your DBI-Link, and the Rest Will Follow</title>
		<link href="http://people.planetpostgresql.org/dfetter/index.php?/archives/54-Free-Your-DBI-Link,-and-the-Rest-Will-Follow.html"/>
		<id>http://people.planetpostgresql.org/dfetter/index.php?/archives/54-guid.html</id>
		<updated>2010-03-10T17:46:57+00:00</updated>
		<content type="html">DBI-Link is now on Github!&lt;br /&gt;
&lt;br /&gt;
Here's how I did it: &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/54-Free-Your-DBI-Link,-and-the-Rest-Will-Follow.html#extended&quot;&gt;Continue reading &quot;Free Your DBI-Link, and the Rest Will Follow&quot;&lt;/a&gt;</content>
		<author>
			<name>David Fetter</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/dfetter/</uri>
		</author>
		<source>
			<title type="html">David Fetter's blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2</id>
			<updated>2010-03-10T18:15:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Temporal PostgreSQL Roadmap</title>
		<link href="http://thoughts.j-davis.com/2010/03/09/temporal-postgresql-roadmap/"/>
		<id>http://thoughts.j-davis.com/?p=254</id>
		<updated>2010-03-10T04:49:06+00:00</updated>
		<content type="html">&lt;p&gt;Why are temporal extensions in PostgreSQL important? Quite simply, managing time data is one of the most common requirements, and current general-purpose database systems don&amp;#8217;t provide us with the basic tools to do it. Every general-purpose DBMS falls short both in terms of usability and performance when trying to manage temporal data.&lt;/p&gt;
&lt;p&gt;What is already done?&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-254&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://pgfoundry.org/projects/temporal&quot;&gt;PERIOD data type&lt;/a&gt;, which can represent anchored intervals of time; that is, a chunk of time with a definite beginning and a definite end (in contrast to a SQL INTERVAL, which is not anchored to any specific beginning or end time).
&lt;ul&gt;
&lt;li&gt;Critical for usability because it acts as a &lt;em&gt;set&lt;/em&gt; of time, so you can easily test for containment and other operations without using awkward constructs like BETWEEN or lots of comparisons (and keeping track of inclusivity/exclusivity of boundary points).&lt;/li&gt;
&lt;li&gt;Critical for performance because you can index the values for efficient &amp;#8220;contains&amp;#8221; and &amp;#8220;overlaps&amp;#8221; queries (among others).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Temporal Keys (called Exclusion Constraints, and will be available in the next release of PostgreSQL, 9.0), which can enforce the constraint that no two periods of time (usually for a given resource, like a person) overlap. See the &lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/sql-createtable.html&quot;&gt;documentation&lt;/a&gt; (look for the word &amp;#8220;EXCLUDE&amp;#8221;), and see my previous articles (&lt;a href=&quot;http://thoughts.j-davis.com/2009/11/01/temporal-keys-part-1/&quot;&gt;part 1&lt;/a&gt; and &lt;a href=&quot;http://thoughts.j-davis.com/2009/11/08/temporal-keys-part-2/&quot;&gt;part 2&lt;/a&gt;) on the subject.
&lt;ul&gt;
&lt;li&gt;Critical for usability to avoid procedural, error-prone hacks to enforce the constraint with triggers or by splitting time into big chunks.&lt;/li&gt;
&lt;li&gt;Critical for performance because it performs comparably to a UNIQUE index, unlike the other procedural hacks which are generally too slow to use for most real systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What needs to be done?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Range Types &amp;#8212; Aside from PERIOD, which is based on TIMESTAMPTZ, it would also be useful to have very similar types based on, for example, DATE. It doesn&amp;#8217;t stop there, so the natural conclusion is to generalize PERIOD into &amp;#8220;range types&amp;#8221; which could be based on almost any subtype.&lt;/li&gt;
&lt;li&gt;Range Keys, Foreign Range Keys &amp;#8212; If Range Types are known to the Postgres engine, that means that we can have syntactic sugar for range keys (like temporal keys, except for any range type), etc., that would internally use Exclusion Constraints.&lt;/li&gt;
&lt;li&gt;Range Join &amp;#8212; If Range Types are known to the Postgres engine, there could be syntactic sugar for a &amp;#8220;range join,&amp;#8221; that is, a join based on &amp;#8220;overlaps&amp;#8221; rather than &amp;#8220;equals&amp;#8221;. More importantly, there could be a new join type, a Range Merge Join, that could perform this join efficiently (without a Range Merge Join, a range join would always be a nested loop join).&lt;/li&gt;
&lt;li&gt;Simple table logs &amp;#8212; The ability to easily create an effective &amp;#8220;audit log&amp;#8221; or similar trigger-based table log, that can record changes and be efficiently queried for historical state or state changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;ll be speaking on this subject (specifically, the new Exclusion Constraints feature) in the upcoming &lt;a href=&quot;http://postgresqlconference.org&quot;&gt;PostgreSQL Conference EAST 2010&lt;/a&gt; (my &lt;a href=&quot;http://postgresqlconference.org/2010/east/talks/not_just_unique_exclusion_constraints&quot;&gt;talk description&lt;/a&gt;) in Philadelphia later this month and &lt;a href=&quot;http://pgcon.org&quot;&gt;PGCon 2010&lt;/a&gt; (my &lt;a href=&quot;http://www.pgcon.org/2010/schedule/events/201.en.html&quot;&gt;talk description&lt;/a&gt;) in Ottawa this May. In the past, these conferences and others have been a great place to get ideas and help me move the temporal features forward.&lt;/p&gt;
&lt;p&gt;The existing features have been picking up a little steam lately. The &lt;a href=&quot;http://lists.pgfoundry.org/pipermail/temporal-general/&quot;&gt;temporal-general mailing list&lt;/a&gt; has some traffic now &amp;#8212; fairly low, but enough that others contribute to the discussions, which is a great start. I&amp;#8217;ve also received some great feedback from a number of people, including the folks at &lt;a href=&quot;http://pgexperts.com&quot;&gt;PGX&lt;/a&gt;. There&amp;#8217;s still a ways to go before we have all the features we want, but progress is being made.&lt;/p&gt;</content>
		<author>
			<name>Jeff Davis</name>
			<uri>http://thoughts.j-davis.com</uri>
		</author>
		<source>
			<title type="html">Experimental Thoughts</title>
			<subtitle type="html">Ideas on Databases, Logic, and Language by Jeff Davis</subtitle>
			<link rel="self" href="http://thoughts.j-davis.com/feed/"/>
			<id>http://thoughts.j-davis.com/feed/</id>
			<updated>2010-03-10T05:00:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">March meeting</title>
		<link href="http://pugs.postgresql.org/node/1624"/>
		<id>http://pugs.postgresql.org/1624 at http://pugs.postgresql.org</id>
		<updated>2010-03-10T01:27:51+00:00</updated>
		<content type="html">&lt;p&gt;Next Thursday, for our regularly scheduled meeting, we will be having a 9.0 alpha testing party!&lt;/p&gt;
&lt;p&gt;When:  7 pm, Thursday, March 19, 2010&lt;br /&gt;
Where:  FreeGeek&lt;br /&gt;
Who:  YOU!&lt;/p&gt;
&lt;p&gt;If you want to test it on your own machine, please download it ahead of time:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.postgresql.org/ftp/source/9.0alpha4/&quot; title=&quot;http://www.postgresql.org/ftp/source/9.0alpha4/&quot;&gt;http://www.postgresql.org/ftp/source/9.0alpha4/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to work on one of the P4 Lab machines, contact Mark so he can get an account set up for you.&lt;/p&gt;
&lt;p&gt;Read:&lt;br /&gt;
&lt;a href=&quot;http://wiki.postgresql.org/wiki/HowToBetaTest&quot; title=&quot;http://wiki.postgresql.org/wiki/HowToBetaTest&quot;&gt;http://wiki.postgresql.org/wiki/HowToBetaTest&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/release-9-0.html&quot; title=&quot;http://developer.postgresql.org/pgdocs/postgres/release-9-0.html&quot;&gt;http://developer.postgresql.org/pgdocs/postgres/release-9-0.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You don't need a laptop to participate - we can do pair-agile-eXtreme testing!&lt;/p&gt;
&lt;p&gt;Afterwards, as usual, we will have beer/crash the PDX.pm Hackathon at the Lucky Lab.&lt;/p&gt;</content>
		<author>
			<name>PDXPUG</name>
			<uri>http://pugs.postgresql.org/blog/19</uri>
		</author>
		<source>
			<title type="html">gabrielle's blog</title>
			<link rel="self" href="http://pugs.postgresql.org/blog/19/feed"/>
			<id>http://pugs.postgresql.org/blog/19/feed</id>
			<updated>2010-03-11T01:15:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Dynamic updates of fields in NEW in PL/pgSQL</title>
		<link href="http://www.depesz.com/index.php/2010/03/10/dynamic-updates-of-fields-in-new-in-plpgsql/"/>
		<id>http://www.depesz.com/?p=1635</id>
		<updated>2010-03-09T23:26:50+00:00</updated>
		<content type="html">Dynamic updates of fields in NEW in PL/pgSQL
Today, on #postgresql on IRC, strk asked about updating fields in NEW record, in plpgsql, but where name of the field is in variable.
After some time, he sent his question to hackers mailing list. And he got prompt reply that it&amp;#8217;s not possible.
Well, I dare to disagree.

First, big [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2010-03-09T23:31:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">User Testimonial Video at PG East</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#March_9_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#March_9_2010</id>
		<updated>2010-03-09T23:15:01+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt; believes in the marketing potential of videos.  You might remember them producing a
&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2009.html#October_15_2009&quot;&gt;video&lt;/a&gt; of me explaining
&lt;a href=&quot;http://pgfoundry.org/projects/pg-migrator/&quot;&gt;pg_migrator&lt;/a&gt; last year.
&lt;/p&gt;
&lt;p&gt;This year, they will be interviewing &lt;a href=&quot;http://www.enterprisedb.com/community/nav-pg-east-2010.do&quot;&gt;PG East&lt;/a&gt; attendees to create a
Postgres user testimonial video.  The community has not used videos extensively for marketing, partly because, while it is easy to
create a video, it is difficult to create a &lt;em&gt;good&lt;/em&gt; video.  (Consider the quality of the average &lt;a href=&quot;http://www.youtube.com/&quot;&gt;YouTube&lt;/a&gt;
video.)  Anyway, my guess is that the video will be something like this customer &lt;a href=&quot;http://www.youtube.com/watch?v=FDubZqqOoac&quot;&gt;video&lt;/a&gt;. 
The video will be shared with the community to help promote Postgres worldwide.
&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL UTF-8 Conversion</title>
		<link href="http://blog.endpoint.com/2010/03/postgresql-utf-8-conversion.html"/>
		<id>tag:blogger.com,1999:blog-7997313029981170997.post-5244869979734827590</id>
		<updated>2010-03-09T19:47:01+00:00</updated>
		<content type="html">&lt;p&gt;It's becoming increasingly common for me to be involved in conversion of an old version of PostgreSQL to a new one, and at the same time, from an old &quot;SQL_ASCII&quot; encoding (that is, undeclared, unvalidated byte soup) to UTF-8.&lt;/p&gt;

&lt;p&gt;Common ways to do this are to run pg_dumpall and then pipe the output through iconv or recode. When your source encoding is all pure ASCII, you don't need to do even that. When it's really all Windows-1252 (a superset of Latin-1 aka ISO-8859-1) it's easy.&lt;/p&gt;

&lt;p&gt;But often, the data is stored in various unknown encodings from several sources over the course of years, including some that's already in UTF-8. When you convert with iconv, it dies with an error at the first problem, whereas recode will let you ignore encoding problems, but that leaves you with junk in your output.&lt;/p&gt;

&lt;p&gt;The case I'm often encountering is fairly easy, but not perfect: Lots of ASCII, some Windows-1252, and some UTF-8. Since both pure ASCII and UTF-8 can be mechanistically detected, I put together this script to do the detection. It's Perl and uses the nice &lt;a href=&quot;http://search.cpan.org/perldoc?IsUTF8&quot;&gt;IsUTF8 module&lt;/a&gt; to do its character encoding detection:&lt;/p&gt;



&lt;p&gt;Pipe input to the script. It handles one line at a time. When run with any arguments (such as --test) it will swallow pure ASCII lines, write lines it thinks are valid UTF-8 to stderr, and will convert the remaining presumed Windows-1252 lines to stdout, for manual examination.&lt;/p&gt;

&lt;p&gt;If its guesses look correct, run it again with no arguments, and it will write all 3 types of encoding to stdout, ready for input to psql in your new UTF-8 encoded database.&lt;/p&gt;

&lt;p&gt;(Don't forget to munge your pg_dump file to remove any hardcoded declarations of &quot;SQL_ASCII&quot; encoding from CREATE DATABASE statements, or otherwise make sure your database actually is created with UTF-8 encoding!)&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-5244869979734827590?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jon Jensen</name>
			<email>noreply@blogger.com</email>
			<uri>http://blog.endpoint.com/search/label/postgres</uri>
		</author>
		<source>
			<title type="html">End Point Blog</title>
			<subtitle type="html">Ongoing observations by End Point people.</subtitle>
			<link rel="self" href="http://blog.endpoint.com/feeds/posts/default/-/postgres/"/>
			<id>tag:blogger.com,1999:blog-7997313029981170997</id>
			<updated>2010-03-10T18:45:44+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL Conference East, Hotel Deadline!</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/03/postgresql_conference_east_hotel_deadline/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/03/postgresql_conference_east_hotel_deadline/</id>
		<updated>2010-03-09T17:22:20+00:00</updated>
		<content type="html">PostgreSQL Conference East, the largest PostgreSQL Conference for Users, Developers, Decision makers and anyone using PostgreSQL arranged for a hotel discount for attendees from the Radisson Warwick Hotel (the location of the conference).&lt;p&gt;The retail price of a double room is ~ 199.00. The discount rate is 132.00.&lt;p&gt;If you are attending PostgreSQL Conference East and you would like the discount you must register by the 11th of March. For more information:&lt;p&gt;&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/east/2010/accommodations&quot;&gt;Accommodations&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/2010/east/agenda&quot;&gt;Agenda&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresqlconference.org/2010/east/talks&quot;&gt;List of talks&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;https://www.postgresql.us/purchase&quot;&gt;Register&lt;/a&gt;&lt;p&gt;Many thanks to our Premiere and Gold Sponsors:&lt;p&gt;&lt;li&gt;&lt;a href=&quot;http://www.commandprompt.com/&quot;&gt;Command Prompt, Inc.&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.omniti.com/&quot;&gt;OmniTI&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.otg-nc.com/&quot;&gt;OTG&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://www.redhat.com/&quot;&gt;Red Hat&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2010-03-11T02:45:22+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL RPM sets for 9.0 Alpha4 released</title>
		<link href="http://people.planetpostgresql.org/devrim/index.php?/archives/36-PostgreSQL-RPM-sets-for-9.0-Alpha4-released.html"/>
		<id>http://people.planetpostgresql.org/devrim/index.php?/archives/36-guid.html</id>
		<updated>2010-03-09T06:38:53+00:00</updated>
		<content type="html">I released PostgreSQL RPM sets for 9.0 Alpha 4 yesterday. They are distributed through PostgreSQL FTP site &amp;amp; mirrors. &lt;br /&gt;
&lt;br /&gt;
Also, they are available via the new PostgreSQL RPM repository: http://yum.pgrpms.org  (more on this will come soon)&lt;br /&gt;
&lt;br /&gt;
Please find more info about 9.0 Alpha 4 RPMs in &lt;a href=&quot;http://archives.postgresql.org/message-id/1268060530.2098.98.camel@hp-laptop2.gunduz.org&quot;&gt;here&lt;/a&gt;.</content>
		<author>
			<name>Devrim GUNDUZ</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/devrim/</uri>
		</author>
		<source>
			<title type="html">Devrim's PostgreSQL Diary</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2</id>
			<updated>2010-03-09T20:00:04+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Countdown to pgCon</title>
		<link href="http://gmrpgsql.tumblr.com/post/435217337"/>
		<id>http://gmrpgsql.tumblr.com/post/435217337</id>
		<updated>2010-03-08T20:49:21+00:00</updated>
		<content type="html">&lt;p&gt;As you may be aware, &lt;a&gt;pgCon 2010&lt;/a&gt;, &lt;b&gt;the&lt;/b&gt; PostgreSQL conference, is just a few months away.  It is an important year for pgCon with the upcoming release of PostgreSQL 9.0.  pgCon’s roots are in the PostgreSQL Anniversary Summit where hackers from all over the world flew in to celebrate PostgreSQL’s 10 years of open-source.  pgCon has kept with the tradition of catering to the core of the PostgreSQL community including hackers and DBA’s alike.&lt;/p&gt;
&lt;p&gt;As the largest PostgreSQL conference one can always expect to be exposed to new features, the latest in thoughts on PostgreSQL performance and scaling, not to mention the many talks aimed at all levels of PostgreSQL professionals and enthusiasts.  To get ready for pgCon this year, I thought I might point out the talks not to miss.&lt;/p&gt;
&lt;p&gt;One of the biggest talks will have to be Heikke Linnakangas introduction of the new built-in replication features in PostgreSQL, Hot Standby and Streaming Replication.  If you’re not familiar with these features, they are truly game changing for Postgres.  Building on the conceptual foundation of Warm-Standby and Point and Time Recovery log shipping, Hot Standby and Streaming Replication turn idle Warm Standby boxes in to active read-only slaves.  Married with a HA solution, Hot Standby becomes an immediate failover solution with the ability to disconnect from the Hot Standby master server and turn on writes.  In an effort to speed up the whole log-shipping paradigm, the streaming replication feature means no more external commands for copying log segments across the wire to Warm Standby servers.  By combing these two features, one of the most sought-after features for PostgreSQL, native replication, becomes a reality.  Heikke brings to this talk an intimate knowledge of the implementation of these two new features making this talk a must-see.&lt;/p&gt;
&lt;p&gt;If you haven’t been to pgCon before and are a PostgreSQL user, DBA or enthusiast like myself, this is the year not to miss.  As for the other significant talks for pgCon 2010, stay tuned as I will highlight my must-see list of talks in the coming weeks.&lt;/p&gt;</content>
		<author>
			<name>Gavin M. Roy</name>
			<uri>http://gmrpgsql.tumblr.com/</uri>
		</author>
		<source>
			<title type="html">gmr on pgsql</title>
			<subtitle type="html">My small blog on thoughts and activities related to PostgreSQL.</subtitle>
			<link rel="self" href="http://gmrpgsql.tumblr.com/rss"/>
			<id>http://gmrpgsql.tumblr.com/rss</id>
			<updated>2010-03-11T02:45:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Actually, the Relational Model doesn't scale</title>
		<link href="http://www.xzilla.net/blog/2010/Mar/Actually,-the-Relational-Model-doesnt-scale.html"/>
		<id>http://www.xzilla.net/blog/2010/Mar/481.html</id>
		<updated>2010-03-08T16:20:56+00:00</updated>
		<content type="html">Before all my fellow DBAs' heads explode, let me just say that I am a relational guy. I like the relational model, think it's the best tool for the job, and think every programmer (not just DBA's) should aspire to be as familiar with it as they are with AJAX, MVC, or whatever other technology pattern you think is important. I'll even take that a step further; I think the NoSQL movement is mostly a re-hash of failed technologies from the last century. Object and document databases had their run in the market (some might say &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=421&amp;amp;entry_id=481&quot; title=&quot;http://www.youtube.com/watch?v=eHiX0FZcjkA&quot;&gt;&quot;they had their time&quot;&lt;/a&gt;), and they were pretty thoroughly beaten by the RDBMS; that some people have reinvented that wheel doesn't change the game. &lt;br /&gt;
&lt;br /&gt;
That said, I find the recent comments from &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=422&amp;amp;entry_id=481&quot; title=&quot;http://thoughts.j-davis.com/2010/03/07/scalability-and-the-relational-model/&quot;&gt;Jeff Davis on the relational model and scalability&lt;/a&gt; to be overlooking some things. The state of computing tasks has changed over the past two decades, and what we know about computer engineering has also changed. Working on highly scalable systems like we do at OmniTI, you can't escape some of the inherent problems that you face when working in these types of environments. As much as I'd like the answer to every problem to be &quot;just use an RDBMS&quot;, &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=425&amp;amp;entry_id=481&quot; title=&quot;http://www.julianbrowne.com/article/viewer/brewers-cap-theorem&quot;&gt;Brewer's CAP theorem&lt;/a&gt; just isn't something you can ignore. &lt;br /&gt;
&lt;br /&gt;
When most people think about the relational model, they think of it in terms of parent-child relationships between tables. Without getting too deep in the details of it, I think it's pretty fair to say that Primary Keys and Foreign Keys are very large part of any relational implementation, and that pretty much all RDBMS strive to allow you to add these constraints to your model; it's what helps keep the data consistent. But there's the rub. CAP theorem points out that as we strive for tighter and tighter consistency, we are pulling away from availability, and sacrificing partition tolerance. Two theoretical systems that run smack dab into each other in the real world. This isn't really something new; if you have ever de-normalized, dropped a foreign key, or split data across multiple nodes, you've run into this before. &lt;br /&gt;
&lt;br /&gt;
Now, where CAP theorem falls on it's face (imho) is that it also ignores another holy trinity of software development; Cheap, Fast, and Good. The size of your problem is dictated by the resources you have available; if you can afford decent tools (and let's be clear, decent is not your web dev throwing up MySQL on an EC2 instance) it is quite likely that the stressors of the relational model will never impact you in a way that most CAP folks are worried about. This is also one of the places the NoSQL movement fails; by throwing the baby out with the bath water. Giving up your data integrity before you have scalability issues is a form of premature optimization. The trick, as &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=424&amp;amp;entry_id=481&quot; title=&quot;http://omniti.com/is/theo-schlossnagle&quot;&gt;Theo&lt;/a&gt; would say, is having the experience to know when such optimizations are and aren't premature.&lt;br /&gt;
&lt;br /&gt;
So what's the take away? I like to say that you use the relational model because it is best, and you use something else because it is necessary. Most SQL implementations can scale very well, and they should be your first choice when starting a new project. But we also can't pretend that there aren't inherent problems as these systems grow larger; let's understand the trade-offs and engineer appropriately. &lt;br /&gt;</content>
		<author>
			<name>Robert Treat</name>
			<email>nospam@example.com</email>
			<uri>http://www.xzilla.net/</uri>
		</author>
		<source>
			<title type="html">zillablog - postgres</title>
			<link rel="self" href="http://www.xzilla.net/feeds/cat/1/postgres.rss"/>
			<id>http://www.xzilla.net/feeds/cat/1/postgres.rss</id>
			<updated>2010-03-10T00:45:28+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL tip: arbitrary serialized rows</title>
		<link href="http://blog.endpoint.com/2010/03/postgresql-tip-arbitrary-serialized.html"/>
		<id>tag:blogger.com,1999:blog-7997313029981170997.post-3049242578137807595</id>
		<updated>2010-03-08T12:05:17+00:00</updated>
		<content type="html">&lt;p&gt;Sometimes when using PostgreSQL, you want to deal with a record in its serialized form.  If you're dealing with a specific table, you can accomplish this using the table name itself:&lt;/p&gt;

&lt;pre&gt;
psql # CREATE TABLE foo (bar text, baz int);
CREATE TABLE

psql # INSERT INTO foo VALUES ('test 1', 1), ('test 2', 2);
INSERT 0 2

psql # SELECT foo FROM foo;
     foo      
--------------
 (&quot;test 1&quot;,1)
 (&quot;test 2&quot;,2)
(2 rows)
&lt;/pre&gt;

&lt;p&gt;This works fine for defined tables, but how to go about this for arbitrary SELECTs?  The answer is simple: wrap in a subselect and alias as so:&lt;/p&gt;

&lt;pre&gt;
psql # SELECT q FROM (SELECT 1, 2) q;
   q   
-------
 (1,2)
(1 row)
&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-3049242578137807595?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Christensen</name>
			<email>david@endpoint.com</email>
			<uri>http://blog.endpoint.com/search/label/postgres</uri>
		</author>
		<source>
			<title type="html">End Point Blog</title>
			<subtitle type="html">Ongoing observations by End Point people.</subtitle>
			<link rel="self" href="http://blog.endpoint.com/feeds/posts/default/-/postgres/"/>
			<id>tag:blogger.com,1999:blog-7997313029981170997</id>
			<updated>2010-03-10T18:45:44+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Scalability and the Relational Model</title>
		<link href="http://thoughts.j-davis.com/2010/03/07/scalability-and-the-relational-model/"/>
		<id>http://thoughts.j-davis.com/?p=242</id>
		<updated>2010-03-07T21:37:24+00:00</updated>
		<content type="html">&lt;p&gt;The relational model is just a way to represent reality. It happens to have some very useful properties, such as closure over many useful operations &amp;#8212; but it&amp;#8217;s a purely logical model of reality. You can implement relational operations using hash joins, MapReduce, or pen and paper.&lt;/p&gt;
&lt;p&gt;So, right away, it&amp;#8217;s meaningless to talk about the scalability of the relational model. Given a particular question, it might be difficult to break it down into bite-sized pieces and distribute it to N worker nodes. But going with MapReduce doesn&amp;#8217;t solve that scalability problem &amp;#8212; it just means that you will have a hard time defining a useful map or reduce operation, or you will have to change the question into something easier to answer.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-242&quot;&gt;&lt;/span&gt;There may exist scalability problems in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL, which defines requirements outside the scope of the relational model, such as ACID properties and transactional semantics.&lt;/li&gt;
&lt;li&gt;Traditional architectures and implementations of SQL, such as the &amp;#8220;table is a file&amp;#8221; equivalence, lack of sophisticated types, etc.&lt;/li&gt;
&lt;li&gt;Particular implementations of SQL &amp;#8212; e.g. &amp;#8220;MySQL can&amp;#8217;t do it, so the relational model doesn&amp;#8217;t scale&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why are these distinctions important? As with many debates, &lt;a title=&quot;Terminology Confusion&quot; href=&quot;http://thoughts.j-davis.com/2007/12/11/terminology-confusion/&quot;&gt;terminology confusion&lt;/a&gt; is at the core, and prevents us from dealing with the problems directly. If SQL is defined in a way that causes scalability problems, we need to identify precisely those requirements that cause a problem, so that we can proceed forward without losing all that has been gained. If the traditional architectures are not suitable for some important use-cases, they need to be adapted. If some particular implementations are not suitable, developers need to switch or demand that it be made competitive.&lt;/p&gt;
&lt;p&gt;The NoSQL movement (or at least the hype surrounding it) is far too disorganized to make real progress. Usually, incremental progress is best; and sometimes a fresh start is best, after drawing on years of lessons learned. But it&amp;#8217;s never a good idea to start over with complete disregard for the past. For instance, an &lt;a href=&quot;http://about.digg.com/blog/looking-future-cassandra&quot;&gt;article from Digg&lt;/a&gt; starts off great:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The fundamental problem is endemic to the relational database mindset, which places the burden of computation on reads rather than writes.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;That&amp;#8217;s good because he blames it on the &lt;em&gt;mindset&lt;/em&gt; not the &lt;em&gt;model&lt;/em&gt;,&lt;em&gt; &lt;/em&gt;and then identifies a specific problem. But then the article completely falls flat:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Computing the intersection with a JOIN is much too slow in MySQL, so we have to do it in PHP.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A join is faster in PHP than MySQL? Why bother even discussing SQL versus NoSQL if your particular implementation of SQL &amp;#8212; MySQL &amp;#8212; can&amp;#8217;t even do a hash join, the exact operation that you need? Particularly when almost every other implementation can (including PostgreSQL)? That kind of reasoning won&amp;#8217;t lead to solutions.&lt;/p&gt;
&lt;p&gt;So, where do we go from here?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Separate the SQL model from the other requirements (some of which may limit scalability) when discussing improvements.&lt;/li&gt;
&lt;li&gt;Improve the SQL model (my readers know that I&amp;#8217;ve criticized SQL&amp;#8217;s logical problems many times in the past).&lt;/li&gt;
&lt;li&gt;Improve the implementations of SQL, particularly how tables are physically stored.&lt;/li&gt;
&lt;li&gt;If you&amp;#8217;re particularly ambitious, come up with a relational alternative to SQL that takes into account what&amp;#8217;s been learned after decades of SQL and can become the next general-purpose DBMS language.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;EDIT 2010-03-09: I should have cited Josh Berkus&amp;#8217;s talk on &lt;a href=&quot;http://www.pgexperts.com/document.html?id=40&quot;&gt;Relational vs. Non-Relational&lt;/a&gt; (complete list of &lt;a href=&quot;http://www.pgexperts.com/presentations.html&quot;&gt;PGX talks&lt;/a&gt;), which was part of the inspiration for this post.&lt;a href=&quot;http://www.pgexperts.com/document.html?id=40&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Jeff Davis</name>
			<uri>http://thoughts.j-davis.com</uri>
		</author>
		<source>
			<title type="html">Experimental Thoughts</title>
			<subtitle type="html">Ideas on Databases, Logic, and Language by Jeff Davis</subtitle>
			<link rel="self" href="http://thoughts.j-davis.com/feed/"/>
			<id>http://thoughts.j-davis.com/feed/</id>
			<updated>2010-03-10T05:00:39+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">ERROR:  invalid byte sequence for encoding</title>
		<link href="http://www.depesz.com/index.php/2010/03/07/error-invalid-byte-sequence-for-encoding/"/>
		<id>http://www.depesz.com/?p=1628</id>
		<updated>2010-03-07T19:29:25+00:00</updated>
		<content type="html">One common problem that a lot of people seem to have is when they encounter error message like this:
# \i test.sql
psql:test.sql:1: ERROR:  invalid byte sequence for encoding &quot;UTF8&quot;: 0xb3
Why it happens? What can be done about it? Let&amp;#8217;s see.

First, we need some theory, so you will understand background.
As you perhaps know, computers generally use [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2010-03-09T23:31:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News March 7th 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20100307"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20100307</id>
		<updated>2010-03-07T08:00:00+00:00</updated>
		<content type="html">Bug fix updates for PostgreSQL 7.4 through 8.4 will be out soon.  Get
ready to upgrade!</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2010-03-08T17:17:20+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">9.0 Status Report</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#March_6_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#March_6_2010</id>
		<updated>2010-03-06T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;Many people are waiting for Postgres 9.0, so here is a status report about the release.  Two weeks ago we completed the last 9.0
&lt;a href=&quot;https://commitfest.postgresql.org/action/commitfest_view?id=5&quot;&gt;CommitFest&lt;/a&gt; and released
&lt;a href=&quot;http://www.postgresql.org/about/news.1183&quot;&gt;9.0 Alpha 4&lt;/a&gt;.  We are now working on a 9.0
&lt;a href=&quot;http://wiki.postgresql.org/wiki/PostgreSQL_9.0_Open_Items&quot;&gt;open items list&lt;/a&gt;.  There are relatively few open items compared to
previous major releases because there are now more developers focused on closing open items.
&lt;/p&gt;
&lt;p&gt;Once we deal with all the items on that list, and any new items that appear, we can release the first 9.0 beta.  Technically, we could
release a beta before dealing with all open items as long as we are sure that none of the existing open items will require cluster
reinitialization (&lt;a href=&quot;http://www.postgresql.org/docs/8.4/static/app-initdb.html&quot;&gt;initdb&lt;/a&gt;).
&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">What is New in PostGIS Land</title>
		<link href="http://www.postgresonline.com/journal/index.php?/archives/153-What-is-New-in-PostGIS-Land.html"/>
		<id>http://www.postgresonline.com/journal/index.php?/archives/153-guid.html</id>
		<updated>2010-03-05T07:09:00+00:00</updated>
		<content type="html">&lt;p&gt;This month we we will be giving two mini-tutorials at &lt;a href=&quot;http://www.postgresqlconference.org/sites/default/files/2010/files/calendar_2010-03-27_2010-03-28.pdf&quot; target=&quot;_blank&quot;&gt;PgCon East 2010 on Saturday, March 27th&lt;/a&gt;.
The topic of the talks will be, you guessed it, &lt;em&gt;PostGIS&lt;/em&gt;.  We have changed our Beyond talk to &lt;a href=&quot;http://postgresqlconference.org/2010/east/talks/postgis_adding_spatial_support_to_postgresql.&quot; target=&quot;_blank&quot;&gt;PostGIS: Adding spatial support to PostgreSQL&lt;/a&gt;
to a beginner focus instead of an intermediate focus.  Topic content will be more or less the same but focused more on people new to spatial database analysis. Our web applications talk will cater more to the web developer trying to integrate PostGIS in their web applications.&lt;/p&gt;
&lt;p&gt;Marcus Rouhani of the Federal Aviation Administation will also be talking about the &lt;a href=&quot;http://postgresqlconference.org/2010/east/talks/faa_airports_gis_and_postgresql&quot; target=&quot;_blank&quot;&gt;Airport GIS 
project and migration from Oracle to PostgreSQL&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;On a somewhat related note, we also hope to be finished with all the chapters of our upcoming book
this month.  We just completed the first draft of our &lt;a href=&quot;http://www.postgis.us/chapter_10&quot; target=&quot;_blank&quot;&gt;Chapter 10: PostgreSQL Add-ons and ancillary tools&lt;/a&gt;. After some back and forth with our editor, this will
be up on MEAP, available for read and comments for early book buyers.  Still two more chapters to finish after that before we get to the polishing
of the text, images, layout and final print version.&lt;/p&gt;

&lt;p&gt;Our publisher &lt;a href=&quot;http://www.manning.com&quot; target=&quot;_blank&quot;&gt;Manning&lt;/a&gt; is running a 50% off sale this Friday (tomorrow or is it today) on any &lt;a href=&quot;http://www.manning.com/about/meap&quot; target=&quot;_blank&quot;&gt;MEAP book&lt;/a&gt; and they have a lot of interesting ones in the pipeline (including ours).&lt;/p&gt;

&lt;h4&gt;Waiting for PostGIS 2.0&lt;/h4&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.osgeo.org/&quot; target=&quot;_blank&quot;&gt;OSGEO&lt;/a&gt; just completed a recent coding sprint in New York.  The New York sprint was a meeting of the minds
of OSGEO people from various projects -- &lt;a href=&quot;http://www.postgis.org&quot; target=&quot;_blank&quot;&gt;PostGIS&lt;/a&gt;, 
&lt;a href=&quot;http://mapserver.org/&quot; target=&quot;_blank&quot;&gt;Mapserver&lt;/a&gt;, &lt;a href=&quot;http://geoserver.org&quot; target=&quot;_blank&quot;&gt;Geoserver&lt;/a&gt;, 
&lt;a href=&quot;http://openlayers.org/&quot; target=&quot;_blank&quot;&gt;OpenLayers&lt;/a&gt;, &lt;a href=&quot;http://www.gdal.org/&quot; target=&quot;_blank&quot;&gt;GDAL&lt;/a&gt;, and some others
were represented.  Sadly we were not able to attend this one.  A summary of the sprint with a PostGIS bent
can be found on &lt;a href=&quot;http://www.oslandia.com/tech/?p=652&quot; target=&quot;_blank&quot;&gt;Olivier Courtin's New York sprint summary (Original French Version)&lt;/a&gt;
and &lt;a href=&quot;http://translate.google.com/translate?js=y&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=1&amp;amp;eotf=1&amp;amp;u=http%3A%2F%2Fwww.oslandia.com%2Ftech%2F%3Fp%3D652&amp;amp;sl=fr&amp;amp;tl=en&quot; target=&quot;_blank&quot;&gt;Olivier Courtin's New York sprint summary (Google English translation)&lt;/a&gt;
and &lt;a href=&quot;http://blog.cleverelephant.ca/search/label/sprint&quot; target=&quot;_blank&quot;&gt;Paul's New York sprint summary&lt;/a&gt;.
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/153-What-is-New-in-PostGIS-Land.html#extended&quot;&gt;Continue reading &quot;What is New in PostGIS Land&quot;&lt;/a&gt;</content>
		<author>
			<name>Leo Hsu and Regina Obe</name>
			<email>nospam@example.com</email>
			<uri>http://www.postgresonline.com/journal/</uri>
		</author>
		<source>
			<title type="html">Postgres OnLine Journal</title>
			<subtitle type="html">an In depth look at the PostgreSQL open source database</subtitle>
			<link rel="self" href="http://www.postgresonline.com/journal/index.php?/feeds/index.rss2"/>
			<id>http://www.postgresonline.com/journal/index.php?/feeds/index.rss2</id>
			<updated>2010-03-09T19:30:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">In Defense of varchar(x)</title>
		<link href="http://www.postgresonline.com/journal/index.php?/archives/154-In-Defense-of-varcharx.html"/>
		<id>http://www.postgresonline.com/journal/index.php?/archives/154-guid.html</id>
		<updated>2010-03-05T00:23:00+00:00</updated>
		<content type="html">&lt;p&gt;This is a rebuttal to &lt;a href=&quot;http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/&quot; target=&quot;_blank&quot;&gt;depesz's charx, varcharx, varchar, and text&lt;/a&gt;
and &lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/24-VARCHARn-Considered-Harmful.html&quot; target=&quot;_blank&quot;&gt;David Fetter's varchar(n) considered harmful&lt;/a&gt;. 
I respect both depesz and David and in fact enjoy reading their blogs. We just have deferring opinions on the topic.
&lt;/p&gt;

&lt;p&gt;For starters, I am pretty tired of the following sentiments from some PostgreSQL  people:
&lt;ul&gt;&lt;li&gt;99% of the people who choose varchar(x) over text in PostgreSQL in most cases
are just ignorant folk and don't realize that text is just as fast if not faster than varchar in PostgreSQL.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;stuff your most despised database here&lt;/em&gt; compatibility is not high on my priority list.&lt;/li&gt;
&lt;li&gt;It is unfortunate you have to work with the crappy tools you work with that can't see the beauty in PostgreSQL text implementation. 
Just get something better that treats PostgreSQL as the superior creature it is.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/154-In-Defense-of-varcharx.html#extended&quot;&gt;Continue reading &quot;In Defense of varchar(x)&quot;&lt;/a&gt;</content>
		<author>
			<name>Leo Hsu and Regina Obe</name>
			<email>nospam@example.com</email>
			<uri>http://www.postgresonline.com/journal/</uri>
		</author>
		<source>
			<title type="html">Postgres OnLine Journal</title>
			<subtitle type="html">an In depth look at the PostgreSQL open source database</subtitle>
			<link rel="self" href="http://www.postgresonline.com/journal/index.php?/feeds/index.rss2"/>
			<id>http://www.postgresonline.com/journal/index.php?/feeds/index.rss2</id>
			<updated>2010-03-09T19:30:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">XSLT working properly in Postgres at last</title>
		<link href="http://people.planetpostgresql.org/andrew/index.php?/archives/61-XSLT-working-properly-in-Postgres-at-last.html"/>
		<id>http://people.planetpostgresql.org/andrew/index.php?/archives/61-guid.html</id>
		<updated>2010-03-04T19:21:48+00:00</updated>
		<content type="html">Productive as ever, Tom Lane seems to have taken a break from making his head hurt on replication issues, and instead fixed some long-standing problems we've had with the xml2 contrib module's memory management. My small contribution was to get it building correctly on Windows. &lt;br /&gt;
&lt;br /&gt;
This means (among other things) that we can now use xslt_process to transform XML in various useful ways. Examples could include generating HTML (or XHTML) from it, or preparing XSL-FO output as a step towards turning it into PDFs, or just pretty printing it. I've just spent a little time verifying that things that were previously broken now work.&lt;br /&gt;
&lt;br /&gt;
Here for example is a simple XML pretty printer function (it can probably be improved on, but this will do for a demo):&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;
create or replace function xml_pretty_print(input xml) 
    returns xml
    language sql as
$func$

select xslt_process($1::text,
$$&amp;lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; 
    version=&quot;1.0&quot;&amp;gt;
   &amp;lt;xsl:output method=&quot;xml&quot; omit-xml-declaration=&quot;yes&quot; indent=&quot;yes&quot;/&amp;gt;
   &amp;lt;xsl:strip-space elements=&quot;*&quot;/&amp;gt;
   &amp;lt;xsl:template match=&quot;@*|node()&quot;&amp;gt;
     &amp;lt;xsl:copy&amp;gt;
       &amp;lt;xsl:apply-templates select=&quot;@*|node()&quot;/&amp;gt;
     &amp;lt;/xsl:copy&amp;gt;
   &amp;lt;/xsl:template&amp;gt;
 &amp;lt;/xsl:stylesheet&amp;gt;
$$::text)::xml

$func$;
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
I have recently found myself doing a lot of XML for one reason or another, and the fact that Postgres just keeps getting better at it is good news.</content>
		<author>
			<name>Andrew Dunstan</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/andrew/</uri>
		</author>
		<source>
			<title type="html">Andrew's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/andrew/index.php?/feeds/index.rss2</id>
			<updated>2010-03-10T22:30:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PGCon 2010 - schedule</title>
		<link href="http://dan.langille.org/2010/03/04/pgcon-2010-schedule/"/>
		<id>http://dan.langille.org/?p=287</id>
		<updated>2010-03-04T14:17:49+00:00</updated>
		<content type="html">The PGCon 2010 schedule has been announced.   Have a read of our outstanding lineup, see where people come from to PGCon, and get your registration started.</content>
		<author>
			<name>Dan Langille</name>
			<uri>http://dan.langille.org</uri>
		</author>
		<source>
			<title type="html">Dan Langille's Other Diary » PostgreSQL</title>
			<subtitle type="html">He has another more popular diary.  This one is more general.</subtitle>
			<link rel="self" href="http://dan.langille.org/category/postgresql/feed/"/>
			<id>http://dan.langille.org/category/postgresql/feed/</id>
			<updated>2010-03-11T02:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Git + bash = win</title>
		<link href="http://people.planetpostgresql.org/dfetter/index.php?/archives/53-Git-+-bash-win.html"/>
		<id>http://people.planetpostgresql.org/dfetter/index.php?/archives/53-guid.html</id>
		<updated>2010-03-03T18:38:26+00:00</updated>
		<content type="html">Modern git comes with a great way to improve your life: git-completion.bash.  To use it, just add the following to your .bashrc:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;if [ -f /etc/bash_completion ]; then&lt;br /&gt;
    . /etc/bash_completion&lt;br /&gt;
    export PS1='\h:\u:\w $(__git_ps1 &quot;(%s) &quot;)'&lt;br /&gt;
fi&lt;/pre&gt;&lt;br /&gt;
Once you've done this, any time you're in a git subdirectory, the branch name will appear in your PS1.&lt;br /&gt;
Any time you're not, it won't.&lt;br /&gt;
Simple!</content>
		<author>
			<name>David Fetter</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/dfetter/</uri>
		</author>
		<source>
			<title type="html">David Fetter's blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2</id>
			<updated>2010-03-10T18:15:14+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">5 Steps to PostgreSQL Performance</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/03/5_steps_to_postgresql_performance/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/03/5_steps_to_postgresql_performance/</id>
		<updated>2010-03-03T17:04:06+00:00</updated>
		<content type="html">As we inch closer to &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PostgreSQL Conference East&lt;/a&gt;, I have been reviewing some of the great talks given at PostgreSQL Conference West. One of those talks was Josh Berkus's great, &quot;5 Steps to PostgreSQL Performance&quot;. Here it is below:&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;

&lt;/div&gt;&lt;p&gt;
If you would like to see more great talks on PostgreSQL, make sure and visit the &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;website... and perhaps even attend PostgreSQL Conference East.&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2010-03-11T02:45:22+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">mongodb 1.3.3 (devel) with mongostat</title>
		<link href="http://www.kennygorman.com/wordpress/?p=495"/>
		<id>http://www.kennygorman.com/wordpress/?p=495</id>
		<updated>2010-03-02T19:07:22+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img src=&quot;http://media.mongodb.org/logo-mongoDB.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.mongodb.org/display/DOCS/Downloads&quot;&gt;MongoDB 1.3.3&lt;/a&gt; (devel) was released today.  My tool called &lt;a href=&quot;http://www.mongodb.org/display/DOCS/mongostat&quot;&gt;mongostat&lt;/a&gt; has been incorporated into mongo1.3.3 and changed from python to C++.  So further development will come inside the mongodb distribution itself.   Also of note is new slave lag for replication.  &lt;a href=&quot;http://jira.mongodb.org/browse/SERVER/fixforversion/10122&quot;&gt;Changelog here&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>kgorman</name>
			<uri>http://www.kennygorman.com/wordpress</uri>
		</author>
		<source>
			<title type="html">kennygorman.com</title>
			<subtitle type="html">database engineering, architecture, and other assorted bits</subtitle>
			<link rel="self" href="http://www.kennygorman.com/wordpress/?feed=atom"/>
			<id>http://www.kennygorman.com/wordpress/?feed=atom</id>
			<updated>2010-03-02T19:15:28+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">OmniTI is heading to PGEast 2010</title>
		<link href="http://www.xzilla.net/blog/2010/Mar/OmniTI-is-heading-to-PGEast-2010.html"/>
		<id>http://www.xzilla.net/blog/2010/Mar/480.html</id>
		<updated>2010-03-02T14:09:00+00:00</updated>
		<content type="html">PGEast is the premiere Postgres conference held inside the U.S. each year, and this years conference, in &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=419&amp;amp;entry_id=480&quot; title=&quot;http://www.postgresqlconference.org/east/2010/accommodations&quot;&gt;Philadelphia&lt;/a&gt;, is now less than a month away. The organization and formatting have evolved a little from previous years, but one things still continues; a very strong presentation line up. We at &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=420&amp;amp;entry_id=480&quot; title=&quot;http://www.omniti.com/&quot;&gt;OmniTI&lt;/a&gt; are very happy to be among that group of people, with four talks in this years conference lineup; &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=413&amp;amp;entry_id=480&quot; title=&quot;http://postgresqlconference.org/2010/east/talks/know_more_waiting_a_guide_to_postgresql_9.0&quot;&gt;Know More Waiting, A Guide To PostgreSQL 9.0 by Robert Treat&lt;/a&gt; (hey, that's me), will give an overview of the upcoming PostgreSQL 9.0 release. While we're still a few months ahead of release, but we have a pretty good idea of what's coming in the next release, and this talk will help you start planning for how you will be able to take advantage of the new features coming our way.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=414&amp;amp;entry_id=480&quot; title=&quot;http://postgresqlconference.org/2010/east/talks/postgresql_meet_amqp&quot;&gt;PostgreSQL, meet AMQP, by Theo Schlossnagle&lt;/a&gt;, looks at &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=415&amp;amp;entry_id=480&quot; title=&quot;https://labs.omniti.com/trac/pgsoltools/browser/trunk/contrib/pg_amqp&quot;&gt;pg_amqp&lt;/a&gt;, a &quot;contrib&quot; style module for Postgres that provides transaction style message queuing from inside of Postgres, using the AMQP standard. &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=416&amp;amp;entry_id=480&quot; title=&quot;http://postgresqlconference.org/2010/east/talks/yet_another_replication_tool_rubyrep&quot;&gt;Yet Another Replication Tool : RubyRep by Denish Patel&lt;/a&gt;, will delve into one of the newer Postgres replication solutions on the block. RubyRep is design for dead simple installation and setup, while still delivering advanced features like data comparing, synchronization between servers, and even master-master replication options. &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=417&amp;amp;entry_id=480&quot; title=&quot;http://postgresqlconference.org/2010/east/talks/database_scalability_patterns&quot;&gt;Database Scalability Patterns by Robert Treat&lt;/a&gt; (me again), takes a look at the common patterns around scaling your database solution, and looks at some of the different options available to people scaling with Postgres. &lt;br /&gt;
&lt;br /&gt;
But wait, there's more! While we at OmniTI are definitely excited to be participating in PGEast this year, there are a number of other good talks and speakers, including Magnus Hagander, Jeff Davis, Baron Schwartz, and many others. For full talk details, check out the &lt;a href=&quot;http://www.xzilla.net/exit.php?url_id=418&amp;amp;entry_id=480&quot; title=&quot;http://www.postgresqlconference.org/2010/east/talks&quot;&gt;conference talks page&lt;/a&gt;; I hope you'll journey out and say hi, it should be a pretty good time.</content>
		<author>
			<name>Robert Treat</name>
			<email>nospam@example.com</email>
			<uri>http://www.xzilla.net/</uri>
		</author>
		<source>
			<title type="html">zillablog - postgres</title>
			<link rel="self" href="http://www.xzilla.net/feeds/cat/1/postgres.rss"/>
			<id>http://www.xzilla.net/feeds/cat/1/postgres.rss</id>
			<updated>2010-03-10T00:45:28+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">CHAR(x) vs. VARCHAR(x) vs. VARCHAR vs. TEXT – UPDATED 2010-03-03</title>
		<link href="http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/"/>
		<id>http://www.depesz.com/?p=1610</id>
		<updated>2010-03-02T11:33:56+00:00</updated>
		<content type="html">Fight!
But more seriously &amp;#8211; people tend to use various data types, and there have been some myths about them, so let&amp;#8217;s see how it really boils down.
First of all &amp;#8211; All those data types are internally saved using the same C data structure &amp;#8211; varlena.
Thanks to this we can be nearly sure that there are [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2010-03-09T23:31:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Scripting psql for Fun and Profit</title>
		<link href="http://people.planetpostgresql.org/dfetter/index.php?/archives/52-Scripting-psql-for-Fun-and-Profit.html"/>
		<id>http://people.planetpostgresql.org/dfetter/index.php?/archives/52-guid.html</id>
		<updated>2010-03-01T21:09:22+00:00</updated>
		<content type="html">Profit?&lt;br /&gt;
&lt;br /&gt;
Yes! &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/52-Scripting-psql-for-Fun-and-Profit.html#extended&quot;&gt;Continue reading &quot;Scripting psql for Fun and Profit&quot;&lt;/a&gt;</content>
		<author>
			<name>David Fetter</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/dfetter/</uri>
		</author>
		<source>
			<title type="html">David Fetter's blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2</id>
			<updated>2010-03-10T18:15:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">On switching away from Core Data</title>
		<link href="http://thebuild.com/blog/2010/02/28/on-switching-away-from-core-data/"/>
		<id>http://thebuild.com/blog/?p=166</id>
		<updated>2010-03-01T02:46:02+00:00</updated>
		<content type="html">&lt;p&gt;Brent Simmons has a &lt;a href=&quot;http://inessential.com/2010/02/26/on_switching_away_from_core_data&quot;&gt;very good piece&lt;/a&gt; about switching away from using Core Data to using SQLite directly in his iPhone app. Substituting &amp;#8220;any common ORM&amp;#8221; for &amp;#8220;Core Data&amp;#8221; (which, after all, is all Core Data is) and &amp;#8220;any SQL database&amp;#8221; for SQLite, he encounters the most common problems that plague those trying to develop scalable solutions on top of ORMs.&lt;/p&gt;</content>
		<author>
			<name>Christophe Pettus</name>
			<uri>http://thebuild.com/blog</uri>
		</author>
		<source>
			<title type="html">The Build » PostgreSQL</title>
			<subtitle type="html">programming, etc.</subtitle>
			<link rel="self" href="http://thebuild.com/blog/category/postgresql/feed/"/>
			<id>http://thebuild.com/blog/category/postgresql/feed/</id>
			<updated>2010-03-11T02:45:41+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Some light hacking on selectivity functions, part 2</title>
		<link href="http://it.toolbox.com/blogs/database-soup/some-light-hacking-on-selectivity-functions-part-2-37199?rss=1"/>
		<id>http://rss.ittoolbox.com/rss/37199@http://it.toolbox.com/blogs/database-soup</id>
		<updated>2010-02-28T14:17:58+00:00</updated>
		<content type="html">So, I was getting bad estimates resulting from using a rule-of-thumb selectivity function designed for a different datatype and intended to force the use of an index regardless of the actual data.  Query problem identified.  But could I solve it?</content>
		<author>
			<name>Josh Berkus</name>
			<uri>http://it.toolbox.com/blogs/database-soup</uri>
		</author>
		<source>
			<title type="html">Database Soup</title>
			<subtitle type="html">Database Soup ranges over a wide array of issues related to open source and database technology.</subtitle>
			<link rel="self" href="http://rss.ittoolbox.com/rss/database-soup.xml"/>
			<id>http://rss.ittoolbox.com/rss/database-soup.xml</id>
			<updated>2010-03-11T02:16:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News February 28th 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20100228"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20100228</id>
		<updated>2010-02-28T08:00:00+00:00</updated>
		<content type="html">PostgreSQL 9.0alpha4 is out.  Test!  More info and download
information below.
&lt;a href=&quot;http://www.postgresql.org/developer/alpha&quot;&gt;http://www.postgresql.org/developer/alpha&lt;/a&gt;
&lt;a href=&quot;http://www.postgresql.org/ftp/source/9.0alpha4&quot;&gt;http://www.postgresql.org/ftp/source/9.0alpha4&lt;/a&gt;</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2010-03-08T17:17:20+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">28 Feb 2010</title>
		<link href="http://www.advogato.org/person/alvherre/diary.html?start=19"/>
		<id>http://www.advogato.org/person/alvherre/diary.html?start=19</id>
		<updated>2010-02-28T02:56:18+00:00</updated>
		<content type="html">So there was an earthquake here and it seems some people
tried to get news from me.  I can't reach my mail currently,
so pardon me while I abuse this blog for a bit.  Fortunately
my family is all alive and well; no damage taken.  The
building we live on is still standing and has no damages
either, though our appartment is now a mess of broken dishes
and bottles.

&lt;p&gt; I will be obviously unable to work much on patches, or
anything really, for at least a week ...&lt;/p&gt;</content>
		<author>
			<name>Alvaro Herrera</name>
			<uri>http://www.advogato.org/person/alvherre/</uri>
		</author>
		<source>
			<title type="html">Advogato blog for alvherre</title>
			<subtitle type="html">Advogato blog for alvherre</subtitle>
			<link rel="self" href="http://www.advogato.org/person/alvherre/rss.xml"/>
			<id>http://www.advogato.org/person/alvherre/rss.xml</id>
			<updated>2010-03-11T02:45:33+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Some light hacking on selectivity functions</title>
		<link href="http://it.toolbox.com/blogs/database-soup/some-light-hacking-on-selectivity-functions-37198?rss=1"/>
		<id>http://rss.ittoolbox.com/rss/37198@http://it.toolbox.com/blogs/database-soup</id>
		<updated>2010-02-27T15:34:30+00:00</updated>
		<content type="html">This is one of the things for which I love PostgreSQL.  With Postgres, you always have the option of getting your hands dirty with some C code and fixing the problem yourself.  And it's probably easier than you'd think.</content>
		<author>
			<name>Josh Berkus</name>
			<uri>http://it.toolbox.com/blogs/database-soup</uri>
		</author>
		<source>
			<title type="html">Database Soup</title>
			<subtitle type="html">Database Soup ranges over a wide array of issues related to open source and database technology.</subtitle>
			<link rel="self" href="http://rss.ittoolbox.com/rss/database-soup.xml"/>
			<id>http://rss.ittoolbox.com/rss/database-soup.xml</id>
			<updated>2010-03-11T02:16:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">More Philadelphia Action</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#February_26_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#February_26_2010</id>
		<updated>2010-02-26T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;A month ago I &lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#January_28_2010_5&quot;&gt;mentioned&lt;/a&gt; a surprising number of Postgres activities
in Philadelphia.  One month later, those events are past but now there are more.  
&lt;/p&gt;
&lt;p&gt;First, &lt;a href=&quot;http://www.enterprisedb.com/community/nav-pg-east-2010.do&quot;&gt;PG East&lt;/a&gt; is shaping up to be a big conference:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The conference &lt;a href=&quot;http://www.enterprisedb.com/community/nav-pg-east-2010.do#TabAgenda&quot;&gt;agenda&lt;/a&gt; looks very full, with both developer
and business-oriented talks.  The business-oriented focus is rather new for Postgres conferences, and I think signals more mainstream
adoption of Postgres.
  &lt;/li&gt;&lt;li&gt;It is at the &lt;a href=&quot;http://www.radisson.com/hotels/paphily&quot;&gt;Warwick Hotel&lt;/a&gt;.  This
&lt;a href=&quot;http://image.pegs.com/content/H/H0Y/H0YD/H0YD7/H0YD7L2P_j.JPG&quot;&gt;lobby photo&lt;/a&gt; should give you a good idea of how nice the hotel is
&amp;mdash;  we will simply have to adjust to having a Postgres conference in a fancy hotel. 
&lt;img src=&quot;http://momjian.us/main/img/blog/wink.png&quot; /&gt;
  &lt;/li&gt;&lt;li&gt;Noel Yuhanna of Forrester Research will be speaking.  He is the person who authored last year's &lt;em&gt;Forrester Wave&lt;/em&gt; report that found
Ingres and MySQL as the leading open source databases
(&lt;a href=&quot;http://www.linux-magazine.com/Online/News/Forrester-Ingres-and-MySQL-Lead-Open-Source-Databases&quot;&gt;news report&lt;/a&gt;).  You can judge for
yourself how much &quot;research&quot; went into that report, but we will be nice to him &amp;mdash; a bodyguard will be unnecessary.
&lt;img src=&quot;http://momjian.us/main/img/blog/wink.png&quot; /&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#February_26_2010&quot;&gt;Continue Reading &amp;raquo;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">PostgreSQL 9.0 Alpha4</title>
		<link href="http://postgresql.blogg.se/2010/february/postgresql-90-alpha4.html"/>
		<id>http://postgresql.blogg.se/2010/february/postgresql-90-alpha4.html</id>
		<updated>2010-02-26T13:25:53+00:00</updated>
		<content type="html">Time to take PostgreSQL 9.0 Alpha4 for a spin! There's a bunch of new stuff to get to know about and try out.</content>
		<author>
			<name>Robert Gravsjö</name>
			<uri>http://postgresql.blogg.se</uri>
		</author>
		<source>
			<title type="html">PostgreSQL stuff</title>
			<subtitle type="html">Mostly about databases, programming, system administration and application deployment.</subtitle>
			<link rel="self" href="http://postgresql.blogg.se/index.rss"/>
			<id>http://postgresql.blogg.se/index.rss</id>
			<updated>2010-03-03T14:16:36+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Installing PostgreSQL</title>
		<link href="http://www.depesz.com/index.php/2010/02/26/installing-postgresql/"/>
		<id>http://www.depesz.com/?p=1601</id>
		<updated>2010-02-26T01:35:13+00:00</updated>
		<content type="html">First of all &amp;#8211; I base information in this post on Linux, so if you are using another operating system &amp;#8211; it&amp;#8217;s quite likely that it will not help you.
Second &amp;#8211; if you&amp;#8217;re using Linux, you have probably some package manager &amp;#8211; dpkg, rpm, pacman, poldek, whatever. Right? So, it should be easy to install [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2010-03-09T23:31:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">...and Devrim flies to...</title>
		<link href="http://people.planetpostgresql.org/devrim/index.php?/archives/35-...and-Devrim-flies-to....html"/>
		<id>http://people.planetpostgresql.org/devrim/index.php?/archives/35-guid.html</id>
		<updated>2010-02-25T16:17:09+00:00</updated>
		<content type="html">After quitting my old job, I got a few offers. Two of them were really good ones, but I had to pick up one. &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/devrim/index.php?/archives/35-...and-Devrim-flies-to....html#extended&quot;&gt;Continue reading &quot;...and Devrim flies to...&quot;&lt;/a&gt;</content>
		<author>
			<name>Devrim GUNDUZ</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/devrim/</uri>
		</author>
		<source>
			<title type="html">Devrim's PostgreSQL Diary</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/devrim/index.php?/feeds/index.rss2</id>
			<updated>2010-03-09T20:00:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">FOSS STHML #1</title>
		<link href="http://blog.hagander.net/archives/165-FOSS-STHML-1.html"/>
		<id>http://blog.hagander.net/archives/165-guid.html</id>
		<updated>2010-02-25T13:05:00+00:00</updated>
		<content type="html">&lt;p&gt;Yesterday was the &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=209&amp;amp;entry_id=165&quot; title=&quot;http://foss-sthlm.haxx.se/mote1.html&quot;&gt;first meeting&lt;/a&gt; for the &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=210&amp;amp;entry_id=165&quot; title=&quot;http://foss-sthlm.haxx.se/&quot;&gt;FOSS STHLM&lt;/a&gt; &quot;group&quot; - a (very) loose group of FOSS interested people in the Stockholm region. We met in a lecture hall at the Stockholm University in Kista north of Stockholm, for a couple of hours of short presentations. The lineup was very nice: cool embedded stuff? yup, rockbox. General linux? Yup, upstart. Debian-specific? Of course. OpenSource Sweden? yeah. Curl? What else did you expect with &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=211&amp;amp;entry_id=165&quot; title=&quot;http://daniel.haxx.se/&quot;&gt;Daniel&lt;/a&gt; as one of the organizers? PostgreSQL? Yeah, why else would I be blogging this?&lt;/p&gt;

&lt;p&gt;Our allocated time was short, so the setup was many short talks. It actually worked a lot better than I thought it would, but it's still very hard to convey something useful in just 20 minutes.&lt;/p&gt;

&lt;p&gt;I had a hard time figuring out what I should focus on, so I did a split into two parts (perfect strategy - if you have too little time to do one thing good, do two things in the same time instead...). I started with a section about &quot;things to think about if you're switching to PostgreSQL or trying it out for the first time&quot; - things like the very most basic config parameters that you always have to touch. And of course the classic - &quot;ident authentication failed&quot; issue that hits everybody on RedHat or Debian platforms at least (which is most of the users - definitely in this crowd). It's hard to do much in 12 minutes, hopefully it got some people interested.&lt;/p&gt;

&lt;p&gt;I followed that with a very very very short version of &quot;what's coming up in 9.0&quot;. Once again, I focused on one of my personal favorite features, which is &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=212&amp;amp;entry_id=165&quot; title=&quot;http://developer.postgresql.org/pgdocs/postgres/sql-createtable.html&quot;&gt;Exclusion Constraints&lt;/a&gt;. While this is often listed as one of the cool things in 9.0, sometimes I feel that too much focus is on streaming replication and hot standby. Don't get me wrong, these are very good and very much needed features. But Exclusion Constraints is a real eye-opener. All databases (including PostgreSQL, of course) have replication - this is &quot;just another way to do it&quot;. Yes, a very important and good way to do it, but it's still not something brand new. Exclusion Constraints is something that's fundamentally new. And it's a brilliant example of how PostgreSQL is moving the goalposts forward. Oh, and it's really useful and cool, of course! (and it'll be even better when we have the period datatype, or something similar, in 9.1!)&lt;/p&gt;

&lt;p&gt;In summary, I think it was a great event. Big thanks to all those who helped make it happen! Hopefully we can follow it up with many more in similar ways - perhaps mixing these many-short-talks with some more focused discussions on specific areas or technologies. Time will tell...&lt;/p&gt;

&lt;p&gt;*Update*: For those who asked, there were somewhere around 150 people in the sessions.&lt;/p&gt;</content>
		<author>
			<name>Magnus Hagander</name>
			<email>nospam@example.com</email>
			<uri>http://blog.hagander.net/</uri>
		</author>
		<source>
			<title type="html">Magnus Hagander's PostgreSQL blog - PostgreSQL</title>
			<link rel="self" href="http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss"/>
			<id>http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss</id>
			<updated>2010-03-02T06:33:54+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Trade-offs in Hot Standby Deployments</title>
		<link href="http://blog.2ndquadrant.com/en/2010/02/tradeoffs-in-hot-standby-deplo.html"/>
		<id>tag:blog.2ndquadrant.com,2010:/en//3.79</id>
		<updated>2010-02-24T18:46:44+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;The new Hot Standby feature in the upcoming PostgreSQL 9.0 allows running queries against standby nodes that previously did nothing but execute a recovery process.  Two common expectations I've heard from users anticipating this feature is that it will allow either distributing short queries across both nodes, or allow running long reports against the standby without using resources on the master.  These are both possible to do right now, but unless you understand the trade-offs involved in how Hot Standby works there can be some unanticipated behavior here.&lt;/p&gt;

&lt;h2&gt;Standard Long-running Queries&lt;/h2&gt;

&lt;p&gt;One of the traditional problems in a database using MVCC, like PostgreSQL, is that a long-running query has to keep open a resource--referred to as a &lt;a href=&quot;http://www.postgresql.org/docs/current/static/transaction-iso.html&quot;&gt;snapshot&lt;/a&gt; in the current Postgres implementation--to prevent the database from removing data the query needs to operate.  For example, just because another client has deleted a row and committed, if an already running query needs that row to complete you can't actually wipe the physical disk blocks related to that row out just yet.  You have to wait until no open queries that expect that row to be visible are still around.&lt;/p&gt;

&lt;h2&gt;Hot Standby Limitations&lt;/h2&gt;

&lt;p&gt;If you have a long-running query you want Hot Standby to execute, there are a couple of types of bad things that can happen when the recovery process is applying updates.  These are described in detail in the &lt;a href=&quot;http://developer.postgresql.org/pgdocs/postgres/hot-standby.html&quot;&gt;Hot Standby Documentation&lt;/a&gt;.  Some of these bad things will cause queries running on the standby to be canceled for reasons that might not be intuitively obvious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A HOT update or VACUUM related update arrives to delete something that query expects to be visible&lt;/li&gt;
&lt;li&gt;A B-tree deletion appears&lt;/li&gt;
&lt;li&gt;There is a locking issue between the query you're running and what locks are required for the update to be processed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The lock situation is difficult to deal with, but not very likely to happen in practice for all that long if you're just running read-only queries on the standby, because those will be isolated via MVCC.  The other two are not hard to run into.  The basic thing to understand is that &lt;em&gt;any&lt;/em&gt; UPDATE or DELETE on the master can lead to interrupting any query on the standby; doesn't matter if the changes even relate to what the query is doing.&lt;/p&gt;

&lt;h2&gt;Good, fast, cheap:  pick two&lt;/h2&gt;

&lt;p&gt;Essentially, there are three things people might want to prioritize:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Avoid master limiting:  Allow xids and associated snapshots to advance unbounded on the master, so that VACUUM and similar cleanup isn't held back by what the standby is doing&lt;/li&gt;
&lt;li&gt;Unlimited queries:  Run queries on the slave for any arbitrary period of time&lt;/li&gt;
&lt;li&gt;Current recovery:  Keep the recovery process on the standby up to date with what's happening on the master, allowing fast fail-over for HA&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In any situation with Hot Standby, it's literally impossible to have all three at once.  You can only pick your trade-off.  The tunable parameters available already let you optimize a couple of ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disabling all these delay/defer settings optimizes for always current recovery, but then you'll discover queries are more likely to be canceled than you might expect.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;max_standby_delay&lt;/em&gt; optimizes for longer queries, at the expense of keeping recovery current.  This delays applying updates to the standby once one that will cause a problem (HOT, VACUUM, B-tree delete, etc.) appears.
&lt;li&gt;&lt;em&gt;vacuum_defer_cleanup_age&lt;/em&gt; and some snapshot hacks can introduce some master limiting to improve on the other two issues, but with a weak UI to do that.  vacuum_defer_cleanup_age is in units of transaction IDs.  You need to have some idea the average amount of xid churn on your system per unit of time to turn the way people think about this problem (&quot;defer by at least 1 hour so my reports will run&quot;) into a setting for this value.  xid consumption rate just isn't a common or even reasonable thing to measure/predict.  Alternately, you can open a snapshot on the primary before starting a long-running query on the standby.  dblink is suggested in the Hot Standby documentation as a way to accomplish that.  Theoretically a daemon on the standby could be written in user-land, living on the primary, to work around this problem too (Simon has a basic design for one).  Basically, you start a series of processes that each acquire a snapshot and then sleep for a period before releasing it.  By spacing out how long they each slept for you could ensure xid snapshots never advanced forward too quickly on the master.  It should already sound obvious how much of a terrible hack this would be.&lt;/li&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Potential Improvements&lt;/h2&gt;

&lt;p&gt;The only one of these you can really do something about cleanly is tightening up and improving the UI for the master limiting.  That turns this into the traditional problem already present in the database:  a long-running query holds open a snapshot (or at least limits the advance of visibility related transaction IDs) on the master, preventing the master from removing things needed for that query to complete.  You might alternately think of this as an auto-tuning vacuum_defer_cleanup_age.&lt;/p&gt;

&lt;p&gt;The question is how to make the &lt;em&gt;primary&lt;/em&gt; respect the needs of long running queries on the &lt;em&gt;standby&lt;/em&gt;.  This might be possible if more information about the transaction visibility requirements of the standby were shared with the master.  Doing that sort of exchange would really be something more appropriate for the new Streaming Replication implementation to share.  The way a simple Hot Standby server is provisioned does not provide any feedback toward the master suitable for this data to be exchanged, besides approaches like the already mentioned dblink hack.&lt;/p&gt;

&lt;p&gt;With PostgreSQL 9.0 just reaching a fourth alpha release, there may still be time to see some improvements in this area yet before the 9.0 release.  It would be nice to see Hot Standby and Streaming Replication really integrated together in a way that accomplishes things that neither is fully capable of doing on their own before coding on this release completely freezes.&lt;/p&gt;</content>
		<author>
			<name>Greg Smith</name>
			<uri>http://blog.2ndquadrant.com/en/</uri>
		</author>
		<source>
			<title type="html">2ndQuadrant, Professional PostgreSQL - Greg's PlanetPostgreSQL</title>
			<subtitle type="html">2ndQuadrant Ltd official blog</subtitle>
			<link rel="self" href="http://blog.2ndquadrant.com/en/atom-greg-planetpostgresql.xml"/>
			<id>tag:blog.2ndquadrant.com,2010-01-19:/en//3</id>
			<updated>2010-03-02T06:31:09+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PgEast Talks posted</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/02/pgeast_talks_posted/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/02/pgeast_talks_posted/</id>
		<updated>2010-02-23T18:03:21+00:00</updated>
		<content type="html">I blogged last week about a small list of content being up for the conference. I am now pleased to announce that 99% of the topics are up. I would say 100% but I keep getting new talks that look good and am trying to accommodate them as the schedule allows.

When I review the talks, I see a lot of good content. Of particular interest to me is the talk from the FAA (yes that FAA) as well as Kevin Grittner's talk on Transaction Isolation. I am also keen on seeing Chander's training class on HS/SR/PITR but unfortunately I will also be teaching on Sunday.

I won't be giving the keynote this year. Instead Ed Boyajian, President and CEO of EnterpriseDB will be. This is probably a good choice considering my Keynote is always somewhat of an Un-Keynote. I am curious to see where Ed thinks things are moving and how quickly. I will be doing the Conference launch and closing session. This year we will continue the trend of having a raffle at the end of the conference.

If you &lt;a href=&quot;http://www.postgresql.us/&quot;&gt;haven't registered yet, now is the time.&lt;/a&gt;</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2010-03-11T02:45:22+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL EC2/EBS/RAID 0 snapshot backup</title>
		<link href="http://blog.endpoint.com/2010/02/postgresql-ec2-ebs-raid0-snapshot.html"/>
		<id>tag:blogger.com,1999:blog-7997313029981170997.post-7614513708234745558</id>
		<updated>2010-02-23T15:58:55+00:00</updated>
		<content type="html">&lt;p&gt;One of our clients uses &lt;a href=&quot;http://aws.amazon.com/&quot;&gt;Amazon Web Services&lt;/a&gt; to host their production application and database servers on EC2 with EBS (Elastic Block Store) storage volumes. Their main database is &lt;a href=&quot;http://www.endpoint.com/services/postgresql&quot;&gt;PostgreSQL&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A big benefit of Amazon's cloud services is that you can easily add and remove virtual server instances, storage space, etc. and pay as you go. One known problem with Amazon's EBS storage is that it is much more I/O limited than, say, a nice SAN.&lt;/p&gt;

&lt;p&gt;To partially mitigate the I/O limitations, they're using 4 EBS volumes to back a Linux software RAID 0 block device. On top of that is the xfs filesystem. This gives roughly 4x the I/O throughput and has been effective so far.&lt;/p&gt;

&lt;p&gt;They ship WAL files to a secondary server that serves as warm standby in case the primary server fails. That's working fine.&lt;/p&gt;

&lt;p&gt;They also do nightly backups using pg_dumpall on the master so that there's a separate portable (SQL) backup not dependent on the server architecture. The problem that led to this article is that extra I/O caused by pg_dumpall pushes the system beyond its I/O limits. It adds both reads (from the PostgreSQL database) and writes (to the SQL output file).&lt;/p&gt;

&lt;p&gt;There are several solutions we are considering so that we can keep both binary backups of the database and SQL backups, since both types are valuable. In this article I'm not discussing all the options or trying to decide which is best in this case. Instead, I want to consider just one of the tried and true methods of backing up the binary database files on another host to offload the I/O:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an atomic snapshot of the block devices&lt;/li&gt;
&lt;li&gt;Spin up another virtual server&lt;/li&gt;
&lt;li&gt;Mount the backup volume&lt;/li&gt;
&lt;li&gt;Start Postgres and allow it to recover from the apparent &quot;crash&quot; the server had (since there wasn't a clean shutdown of the database before the snapshot&lt;/li&gt;
&lt;li&gt;Do whatever pg_dump or other backups are desired&lt;/li&gt;
&lt;li&gt;Make throwaway copies of the snapshot for QA or other testing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The benefit of such snapshots is that you get an exact backup of the database, with whatever table bloat, indexes, statistics, etc. exactly as they are in production. That's a big difference from a freshly created database and import from pg_dump.&lt;/p&gt;

&lt;p&gt;The difference here is that we're using 4 EBS volumes with RAID 0 striped across them, and there isn't currently a way to do an atomic snapshot of all 4 volumes at the same time. So it's no longer &quot;atomic&quot; and who knows what state the filesystem metadata and the file data itself would be in?&lt;/p&gt;

&lt;p&gt;Well, why not try it anyway? Filesystem metadata doesn't change that often, especially in the controlled environment of a Postgres data volume. Snapshotting within a relatively short timeframe would be pretty close to atomic, and probably look to the software (operating system and database) like some kind of strange crash since some EBS volumes would have slightly newer writes than others. But aren't all crashes a little unpredictable? Why shouldn't the software be able to deal with that? Especially if we have Postgres make a checkpoint right before we snapshot.&lt;/p&gt;

&lt;p&gt;I wanted to know if it was crazy or not, so I tried it on a new set of services in a separate AWS account. Here are the notes and some details of what I did:&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;Created one EC2 image:&lt;br /&gt;
Amazon EC2 Debian 5.0 lenny AMI built by Eric Hammond&lt;br /&gt;
Debian AMI ID ami-4ffe1926 (x86_64)&lt;br /&gt;
Instance Type:  High-CPU Extra Large (c1.xlarge) - 7 GB RAM, 8 CPU cores
&lt;/li&gt;

&lt;li&gt;Created 4 x 10 GB EBS volumes&lt;/li&gt;

&lt;li&gt;Attached volumes to the image&lt;/li&gt;

&lt;li&gt;Created software RAID 0 device:
&lt;pre&gt;mdadm -C /dev/md0 -n 4 -l 0 -z max /dev/sdf /dev/sdg /dev/sdh /dev/sdi&lt;/pre&gt;
&lt;/li&gt;

&lt;li&gt;Created XFS filesystem on top of RAID 0 device:
&lt;pre&gt;mkfs -t xfs -L /pgdata /dev/md0&lt;/pre&gt;
&lt;/li&gt;

&lt;li&gt;Set up in /etc/fstab and mounted:
&lt;pre&gt;mkdir /pgdata
# edit /etc/fstab, with noatime
mount /pgdata&lt;/pre&gt;
&lt;/li&gt;

&lt;li&gt;Installed PostgreSQL 8.3&lt;/li&gt;

&lt;li&gt;Configured postgresql.conf to be similar to primary production database server&lt;/li&gt;

&lt;li&gt;Created empty new database cluster with data directory in /pgdata&lt;/li&gt;

&lt;li&gt;Started Postgres and imported a play database (from public domain census name data and Project Gutenberg texts), resulting in about 820 MB in data directory&lt;/li&gt;

&lt;li&gt;Ran some bulk inserts to grow database to around 5 GB&lt;/li&gt;

&lt;li&gt;Rebooted EC2 instance to confirm everything came back up correctly on its own&lt;/li&gt;

&lt;li&gt;Set up two concurrent data-insertion processes:&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;50 million row insert based on another local table (INSERT INTO ... SELECT ...), in a single transaction (hits disk hard, but nothing should be visible in the snapshot because the transaction won't have committed before the snapshot is taken)&lt;/li&gt;

&lt;li&gt;Repeated single inserts in autocommit mode (Python script writing INSERT statements using random data from /usr/share/dict/words piped into psql), to verify that new inserts made it into the snapshot, and no partial row garbage leaked through&lt;/li&gt;
&lt;/ul&gt;

&lt;li&gt;Started those &quot;beater&quot; jobs, which mostly consumed 2-3 CPU cores&lt;/li&gt;

&lt;li&gt;Manually inserted a known test row and created a known view that should appear in the snapshot&lt;/li&gt;

&lt;li&gt;Started Postgres's backup mode that allows for copying binary data files in a non-atomic manner, which also does a CHECKPOINT and thus also a filesystem sync:
&lt;pre&gt;SELECT pg_start_backup('raid_backup');&lt;/pre&gt;
&lt;/li&gt;

&lt;li&gt;Manually inserted a 2nd known test row &amp;amp; 2nd known test view that I don't want to appear in the snapshot after recovery&lt;/li&gt;

&lt;li&gt;Ran snapshot script which calls ec2-create-snapshot on each of the 4 EBS volumes -- during first run, run serially quite slowly taking about 1 minute total; during second run, run in parallel such that the snapshot point was within 1 second for all 4 volumes&lt;/li&gt;

&lt;li&gt;Tell Postgres the backup's over:
&lt;pre&gt;SELECT pg_stop_backup();&lt;/pre&gt;&lt;/li&gt;

&lt;li&gt;Ran script to create new EBS volumes derived from the 4 snapshots (which aren't directly usable and always go into S3), using &lt;tt&gt;ec2-create-volume --snapshot&lt;/tt&gt;&lt;/li&gt;

&lt;li&gt;Run script to attach new EBS volumes to devices on the new EC2 instance using ec2-attach-volume&lt;/li&gt;

&lt;li&gt;Then, on the new EC2 instance for doing backups:&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;mdadm --assemble --scan&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;mount /pgdata&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Start Postgres&lt;/li&gt;
&lt;li&gt;Count rows on the 2 volatile tables; confirm that the table with the in-process transaction doesn't show any new rows, and that the table getting individual rows committed to reads correctly&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;VACUUM VERBOSE&lt;/tt&gt; -- and confirm no errors or inconsistencies detected&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;pg_dumpall&lt;/tt&gt;   # confirmed no errors and data looks sound&lt;/li&gt;
&lt;/ul&gt;

&lt;/ol&gt;

&lt;p&gt;It worked! No errors or problems, and pretty straightforward to do.&lt;/p&gt;

&lt;p&gt;Actually before doing all the above I first did a simpler trial run with no active database writes happening, and didn't make any attempt for the 4 EBS snapshots to happen simultaneously. They were actually spread out over almost a minute, and it worked fine. With the confidence that the whole thing wasn't a fool's errand, I then put together the scripts to do lots of writes during the snapshot and made the snapshots run in parallel so they'd be close to atomic.&lt;/p&gt;

&lt;p&gt;There are lots of caveats to note here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is an experiment in progress, not a how-to for the general public.&lt;/li&gt;
&lt;li&gt;The data set that was snapshotted was fairly small.&lt;/li&gt;
&lt;li&gt;Two successful runs, even with no failures, is not a very big sample set. :)&lt;/li&gt;
&lt;li&gt;I didn't use Postgres's point-in-time recovery (PITR) here at all -- I just started up the database and let Postgres recover from an apparent crash. Shipping over the few WAL logs from the master collected during the pg_backup run &lt;em&gt;after&lt;/em&gt; the snapshot copying is complete would allow a theoretically fully reliable recovery to be made, not just a practically non-failing recovery as I did above.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So there's more work to be done to prove this technique viable in production for a mission-critical  database, but it's a promising start worth further investigation. It shows that there &lt;em&gt;is&lt;/em&gt; a way to back up a database across multiple EBS volumes without adding noticeably to its I/O load by utilizing the Amazon EBS data store's snapshotting and letting a separate EC2 server offload the I/O of backups or anything else we want to do with the data.&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-7614513708234745558?l=blog.endpoint.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jon Jensen</name>
			<email>noreply@blogger.com</email>
			<uri>http://blog.endpoint.com/search/label/postgres</uri>
		</author>
		<source>
			<title type="html">End Point Blog</title>
			<subtitle type="html">Ongoing observations by End Point people.</subtitle>
			<link rel="self" href="http://blog.endpoint.com/feeds/posts/default/-/postgres/"/>
			<id>tag:blogger.com,1999:blog-7997313029981170997</id>
			<updated>2010-03-10T18:45:44+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Getting out of SQL_ASCII, part 2</title>
		<link href="http://blog.tapoueh.org/blog.dim.html#%20Getting%20out%20of%20SQL_ASCII%2C%20part%202"/>
		<id>http://blog.tapoueh.org/blog.dim.html#%20Getting%20out%20of%20SQL_ASCII%2C%20part%202</id>
		<updated>2010-02-23T15:30:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a name=&quot;20100223-17:30&quot; id=&quot;20100223-17:30&quot;&gt;&lt;/a&gt;
&lt;a name=&quot;%20Getting%20out%20of%20SQL_ASCII%2C%20part%202&quot; id=&quot;%20Getting%20out%20of%20SQL_ASCII%2C%20part%202&quot;&gt;&lt;/a&gt;
So, if you followed the previous blog entry, now you have a new database
containing all the &lt;em&gt;static&lt;/em&gt; tables encoded in &lt;code&gt;UTF-8&lt;/code&gt; rather than
&lt;code&gt;SQL_ASCII&lt;/code&gt;. Because if it was not yet the case, you now severely distrust
this non-encoding.&lt;/p&gt;

&lt;p&gt;Now is the time to have a look at properly encoding the &lt;em&gt;live&lt;/em&gt; data, those
stored in tables that continue to receive write traffic. The idea is to use
the &lt;code&gt;UPDATE&lt;/code&gt; facilities of PostgreSQL to tweak the data, and too fix the
applications so as not to continue inserting badly encoded strings in there.&lt;/p&gt;

&lt;h3&gt;Finding non UTF-8 data&lt;/h3&gt;

&lt;p class=&quot;first&quot;&gt;First you want to find out the badly encoded data. You can do that with this
helper function that &lt;a href=&quot;http://blog.rhodiumtoad.org.uk/&quot;&gt;RhodiumToad&lt;/a&gt; gave me on IRC. I had a version from the
archives before that, but the &lt;em&gt;regexp&lt;/em&gt; was hard to maintain and quote into a
&lt;code&gt;PL&lt;/code&gt; function. This is avoided by two means, first one is to have a separate
pure &lt;code&gt;SQL&lt;/code&gt; function for the &lt;em&gt;regexp&lt;/em&gt; checking (so that you can index it should
you need to) and the other one is to apply the regexp to &lt;code&gt;hex&lt;/code&gt; encoded
data. Here we go:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
&lt;span&gt;create&lt;/span&gt; &lt;span&gt;or&lt;/span&gt; replace &lt;span&gt;function&lt;/span&gt; &lt;span&gt;public.utf8hex_valid&lt;/span&gt;(str text)
 &lt;span&gt;returns&lt;/span&gt; &lt;span&gt;boolean&lt;/span&gt;
 &lt;span&gt;language&lt;/span&gt; &lt;span&gt;sql&lt;/span&gt; immutable
&lt;span&gt;as&lt;/span&gt; $f$
   &lt;span&gt;select&lt;/span&gt; $1 ~ $r$(?x)
                  ^(?:(?:[0-7][0-9a-f])
                     |(?:(?:c[2-9a-f]|d[0-9a-f])
                        |e0[ab][0-9a-f]
                        |ed[89][0-9a-f]
                        |(?:(?:e[1-9abcef])
                           |f0[9ab][0-9a-f]
                           |f[1-3][89ab][0-9a-f]
                           |f48[0-9a-f]
                          )[89ab][0-9a-f]
                       )[89ab][0-9a-f]
                    )*$
                $r$;
$f$;
&lt;/pre&gt;

&lt;p&gt;Now some little scripting around it in order to skip intense manual and
boring work (and see, some more catalog queries). Don't forget we will have
to work on a per-column basis here...&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
&lt;span&gt;create&lt;/span&gt; &lt;span&gt;or&lt;/span&gt; replace &lt;span&gt;function&lt;/span&gt; &lt;span&gt;public.check_encoding_utf8&lt;/span&gt;
 (
   &lt;span&gt;IN&lt;/span&gt; schemaname text,
   &lt;span&gt;IN&lt;/span&gt; tablename  text,
  &lt;span&gt;OUT&lt;/span&gt; relname    text,
  &lt;span&gt;OUT&lt;/span&gt; attname    text,
  &lt;span&gt;OUT&lt;/span&gt; &lt;span&gt;count&lt;/span&gt;      bigint
 )
 &lt;span&gt;returns&lt;/span&gt; setof record
 &lt;span&gt;language&lt;/span&gt; plpgsql
&lt;span&gt;as&lt;/span&gt; $f$
&lt;span&gt;DECLARE&lt;/span&gt;
  v_sql text;
&lt;span&gt;BEGIN&lt;/span&gt;
  &lt;span&gt;FOR&lt;/span&gt; relname, attname
   &lt;span&gt;IN&lt;/span&gt; &lt;span&gt;SELECT&lt;/span&gt; c.relname, a.attname
        &lt;span&gt;FROM&lt;/span&gt; pg_attribute a
             &lt;span&gt;JOIN&lt;/span&gt; pg_class c &lt;span&gt;on&lt;/span&gt; a.attrelid = c.oid
             &lt;span&gt;JOIN&lt;/span&gt; pg_namespace s &lt;span&gt;on&lt;/span&gt; s.oid = c.relnamespace
             &lt;span&gt;JOIN&lt;/span&gt; pg_roles r &lt;span&gt;on&lt;/span&gt; r.oid = c.relowner
       &lt;span&gt;WHERE&lt;/span&gt; s.nspname = schemaname
         &lt;span&gt;AND&lt;/span&gt; atttypid &lt;span&gt;IN&lt;/span&gt; (25, 1043) &lt;span&gt;-- text, varchar
&lt;/span&gt;         &lt;span&gt;AND&lt;/span&gt; relkind = &lt;span&gt;'r'&lt;/span&gt;          &lt;span&gt;-- ordinary table
&lt;/span&gt;         &lt;span&gt;AND&lt;/span&gt; r.rolname = &lt;span&gt;'some_specific_role'&lt;/span&gt;
         &lt;span&gt;AND&lt;/span&gt; &lt;span&gt;CASE&lt;/span&gt; &lt;span&gt;WHEN&lt;/span&gt; tablename &lt;span&gt;IS&lt;/span&gt; &lt;span&gt;NOT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt;
                  &lt;span&gt;THEN&lt;/span&gt; c.relname ~ tablename
                  &lt;span&gt;ELSE&lt;/span&gt; &lt;span&gt;true&lt;/span&gt;
              &lt;span&gt;END&lt;/span&gt;
  LOOP
    v_sql := &lt;span&gt;'SELECT count(*) '&lt;/span&gt;
          || &lt;span&gt;'  FROM ONLY '&lt;/span&gt;|| schemaname || &lt;span&gt;'.'&lt;/span&gt; || relname
          || &lt;span&gt;' WHERE NOT public.utf8hex_valid(encode(textsend('&lt;/span&gt;
          || attname
          || &lt;span&gt;'), ''hex''))'&lt;/span&gt;;

    &lt;span&gt;-- RAISE NOTICE 'Checking: %.%', relname, attname;
&lt;/span&gt;    &lt;span&gt;-- RAISE NOTICE 'SQL: %', v_sql;
&lt;/span&gt;    &lt;span&gt;EXECUTE&lt;/span&gt; v_sql &lt;span&gt;INTO&lt;/span&gt; &lt;span&gt;count&lt;/span&gt;;
    &lt;span&gt;RETURN&lt;/span&gt; &lt;span&gt;NEXT&lt;/span&gt;;
  &lt;span&gt;END&lt;/span&gt; LOOP;
&lt;span&gt;END&lt;/span&gt;;
$f$;
&lt;/pre&gt;

&lt;p&gt;Note that the &lt;code&gt;tablename&lt;/code&gt; is compared using the &lt;code&gt;~&lt;/code&gt; operator, so that's &lt;em&gt;regexp&lt;/em&gt;
matching there too. Also note that I wanted only to check those tables that
are owned by a specific role, your case may vary.&lt;/p&gt;

&lt;p&gt;The way I used this function was like this:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
&lt;span&gt;create&lt;/span&gt; &lt;span&gt;table&lt;/span&gt; &lt;span&gt;leon.check_utf8&lt;/span&gt; &lt;span&gt;as&lt;/span&gt;
 &lt;span&gt;select&lt;/span&gt; *
   &lt;span&gt;from&lt;/span&gt; public.check_encoding_utf8();
&lt;/pre&gt;

&lt;p&gt;Then you need to take action on those lines in &lt;code&gt;leon.check_utf8&lt;/code&gt; table which
have a &lt;code&gt;count &amp;gt; 0&lt;/code&gt;. Rince and repeat, but you may soon realise building the
table over and over again is costly.&lt;/p&gt;


&lt;h3&gt;Cleaning up the data&lt;/h3&gt;

&lt;p class=&quot;first&quot;&gt;Up for some more helper tools? Unless you really want to manually fix this
huge amount of columns where some data ain't &lt;code&gt;UTF-8&lt;/code&gt; compatible... here's some
more:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
&lt;span&gt;create&lt;/span&gt; &lt;span&gt;or&lt;/span&gt; replace &lt;span&gt;function&lt;/span&gt; &lt;span&gt;leon.nettoyeur&lt;/span&gt;
 (
  &lt;span&gt;IN&lt;/span&gt;  &lt;span&gt;action&lt;/span&gt;      text,
  &lt;span&gt;IN&lt;/span&gt;  encoding    text,
  &lt;span&gt;IN&lt;/span&gt;  tablename   text,
  &lt;span&gt;IN&lt;/span&gt;  columname   text,

  &lt;span&gt;OUT&lt;/span&gt; orig        text,
  &lt;span&gt;OUT&lt;/span&gt; utf8        text
 )
 &lt;span&gt;returns&lt;/span&gt; setof record
 &lt;span&gt;language&lt;/span&gt; plpgsql
&lt;span&gt;as&lt;/span&gt; $f$
&lt;span&gt;DECLARE&lt;/span&gt;
  p_convert text;
&lt;span&gt;BEGIN&lt;/span&gt;
  IF encoding &lt;span&gt;IS&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt;
  &lt;span&gt;THEN&lt;/span&gt;
    p_convert := &lt;span&gt;'translate('&lt;/span&gt;
              || columname || &lt;span&gt;', '&lt;/span&gt;
              || $$&lt;span&gt;'\211\203\202'&lt;/span&gt;$$
              || &lt;span&gt;', '&lt;/span&gt;
              || $$&lt;span&gt;'   '&lt;/span&gt;$$
              || &lt;span&gt;') '&lt;/span&gt;;
  &lt;span&gt;ELSE&lt;/span&gt;
    &lt;span&gt;-- in 8.2, write convert using, in 8.3, the other expression
&lt;/span&gt;    &lt;span&gt;-- p_convert := 'convert(' || columname || ' using ' || conversion || ') ';
&lt;/span&gt;    p_convert := &lt;span&gt;'convert(textsend('&lt;/span&gt; || columname || &lt;span&gt;'), '''&lt;/span&gt;|| encoding ||&lt;span&gt;''', ''utf-8'' ) '&lt;/span&gt;;
  &lt;span&gt;END&lt;/span&gt; IF;

  IF &lt;span&gt;action&lt;/span&gt; = &lt;span&gt;'select'&lt;/span&gt;
  &lt;span&gt;THEN&lt;/span&gt;
    &lt;span&gt;FOR&lt;/span&gt; orig, utf8
     &lt;span&gt;IN&lt;/span&gt; &lt;span&gt;EXECUTE&lt;/span&gt; &lt;span&gt;'SELECT '&lt;/span&gt; || columname || &lt;span&gt;', '&lt;/span&gt;
         || p_convert
         || &lt;span&gt;'  FROM ONLY '&lt;/span&gt; || tablename
         || &lt;span&gt;' WHERE not public.utf8hex_valid('&lt;/span&gt;
         || &lt;span&gt;'encode(textsend('&lt;/span&gt;|| columname ||&lt;span&gt;'), ''hex''))'&lt;/span&gt;
    LOOP
      &lt;span&gt;RETURN&lt;/span&gt; &lt;span&gt;NEXT&lt;/span&gt;;
    &lt;span&gt;END&lt;/span&gt; LOOP;

  ELSIF &lt;span&gt;action&lt;/span&gt; = &lt;span&gt;'update'&lt;/span&gt;
  &lt;span&gt;THEN&lt;/span&gt;
    &lt;span&gt;EXECUTE&lt;/span&gt; &lt;span&gt;'UPDATE ONLY '&lt;/span&gt; || tablename
         || &lt;span&gt;' SET '&lt;/span&gt; || columname || &lt;span&gt;' = '&lt;/span&gt; || p_convert
         || &lt;span&gt;' WHERE not public.utf8hex_valid('&lt;/span&gt;
         || &lt;span&gt;'encode(textsend('&lt;/span&gt;|| columname ||&lt;span&gt;'), ''hex''))'&lt;/span&gt;;

    &lt;span&gt;FOR&lt;/span&gt; orig, utf8
     &lt;span&gt;IN&lt;/span&gt; &lt;span&gt;SELECT&lt;/span&gt; *
          &lt;span&gt;FROM&lt;/span&gt; leon.nettoyeur(&lt;span&gt;'select'&lt;/span&gt;, encoding, tablename, columname)
    LOOP
      &lt;span&gt;RETURN&lt;/span&gt; &lt;span&gt;NEXT&lt;/span&gt;;
    &lt;span&gt;END&lt;/span&gt; LOOP;

  &lt;span&gt;ELSE&lt;/span&gt;
    RAISE &lt;span&gt;EXCEPTION&lt;/span&gt; &lt;span&gt;'L&amp;#233;on, Nettoyeur, veut de l''action.'&lt;/span&gt;;

  &lt;span&gt;END&lt;/span&gt; IF;
&lt;span&gt;END&lt;/span&gt;;
$f$;
&lt;/pre&gt;

&lt;p&gt;As you can see, this function allows to check the conversion process from a
given supposed encoding before to actually convert the data in place. This
is very useful as even when you're pretty sure the non-utf8 data is &lt;code&gt;latin1&lt;/code&gt;,
sometime you find it's &lt;code&gt;windows-1252&lt;/code&gt; or such. So double check before telling
&lt;code&gt;leon.nettoyeur()&lt;/code&gt; to update your precious data!&lt;/p&gt;

&lt;p&gt;Also, there's a facility to use &lt;code&gt;translate()&lt;/code&gt; when none of the encoding match
your expectations. This is a skeleton just replacing invalid characters with
a &lt;code&gt;space&lt;/code&gt;, tweak it at will!&lt;/p&gt;


&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p class=&quot;first&quot;&gt;Enjoy your clean database now, even if it still accepts new data that will
probably not pass the checks, so we still have to be careful about that and
re-clean every day until the migration is effective. Or maybe add a &lt;code&gt;CHECK&lt;/code&gt;
clause that will reject badly encoded data...&lt;/p&gt;

&lt;p&gt;In fact here we're using &lt;a href=&quot;http://wiki.postgresql.org/wiki/Londiste_Tutorial&quot;&gt;Londiste&lt;/a&gt; to replicate the &lt;em&gt;live&lt;/em&gt; data from the old to
the new server, and that means the replication will break each time there's
new data written in non-utf8, as the new server is running &lt;code&gt;8.4&lt;/code&gt;, which by
design ain't very forgiving. Our plan is to clean-up as we go (remove table
from the &lt;em&gt;subscriber&lt;/em&gt;, fix it, add it again) and migrate as soon as possible!&lt;/p&gt;

&lt;p&gt;Bonus points to those of you getting the convoluted reference :)&lt;/p&gt;</content>
		<author>
			<name>Dimitri Fontaine</name>
			<uri>http://blog.tapoueh.org/blog.dim.html</uri>
		</author>
		<source>
			<title type="html">tail -f /dev/dim</title>
			<subtitle type="html">dim's PostgreSQL blog</subtitle>
			<link rel="self" href="http://blog.tapoueh.org/blog.dim.xml"/>
			<id>http://blog.tapoueh.org/blog.dim.xml</id>
			<updated>2010-03-04T12:46:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HAST - High Availability Storage</title>
		<link href="http://dan.langille.org/2010/02/22/hast-high-availability-storage/"/>
		<id>http://dan.langille.org/?p=279</id>
		<updated>2010-02-23T02:39:22+00:00</updated>
		<content type="html">HAST has just been added to FreeBSD:
HAST allows to transparently store data on two physically separated machines connected over the TCP/IP network. Those two machines together will be called a cluster and each machine is one cluster node. HAST works in Primary-Secondary (Master-Backup, Master-Slave) configuration, which means that only one of the cluster nodes can [...]</content>
		<author>
			<name>Dan Langille</name>
			<uri>http://dan.langille.org</uri>
		</author>
		<source>
			<title type="html">Dan Langille's Other Diary » PostgreSQL</title>
			<subtitle type="html">He has another more popular diary.  This one is more general.</subtitle>
			<link rel="self" href="http://dan.langille.org/category/postgresql/feed/"/>
			<id>http://dan.langille.org/category/postgresql/feed/</id>
			<updated>2010-03-11T02:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">BWPUG March 10th, Falls Church take two.</title>
		<link href="http://www.xzilla.net/blog/2010/Feb/BWPUG-March-10th,-Falls-Church-take-two..html"/>
		<id>http://www.xzilla.net/blog/2010/Feb/479.html</id>
		<updated>2010-02-23T02:02:39+00:00</updated>
		<content type="html">Barring a repeat of last months snowmageddon / snowpocalypse, we're going to take another stab at heading down to Falls Church, Va, for the March BWPUG meeting.  If you haven't felt like trucking out to Columbia, then please try to make this one.  Depending on response we may be able to do this more often.&lt;br /&gt;
&lt;br /&gt;
When: March 10th, 6:30PM.&lt;br /&gt;
Where: 3150 Fairview Park Dr, Falls Church, VA&lt;br /&gt;
Host: Noblis, Inc. and the&lt;br /&gt;
     Noblis Innovation and Collaboration Center (NICC)&lt;br /&gt;
&lt;br /&gt;
It's basically at 495 and 50 in Northern Virginia.  We'll be discussing the upcoming PostgreSQL 9.0 release, including a preview of my upcoming talk at PG East. &lt;br /&gt;
&lt;br /&gt;
If you're planning to attend, please RSVP to Stephen Frost via sfrost &lt;u&gt;at&lt;/u&gt; noblis.org. The host/facility we'll be meeting at does require a government issued photo ID (eg: driver's license or passport).&lt;br /&gt;
&lt;br /&gt;
Hope to see you there!</content>
		<author>
			<name>Robert Treat</name>
			<email>nospam@example.com</email>
			<uri>http://www.xzilla.net/</uri>
		</author>
		<source>
			<title type="html">zillablog - postgres</title>
			<link rel="self" href="http://www.xzilla.net/feeds/cat/1/postgres.rss"/>
			<id>http://www.xzilla.net/feeds/cat/1/postgres.rss</id>
			<updated>2010-03-10T00:45:28+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL Europe opens for general membership</title>
		<link href="http://pgsnake.blogspot.com/2010/02/postgresql-europe-opens-for-general.html"/>
		<id>tag:blogger.com,1999:blog-3645070705954691807.post-4656067437536425910</id>
		<updated>2010-02-22T19:44:00+00:00</updated>
		<content type="html">After numerous emails, meetings in foreign lands and changes to the statutes, PostgreSQL Europe finally opened it's doors to new members today, of which I became the very first. Well, OK, technically I'm the fifth, as the elected board made up the first four, but I was the first non-elected, fee paying member.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So 'what's the point?' I hear you cry, and 'why should I part with my hard-earned cash?'. Well, joining PostgreSQL Europe costs €10 for 2 years &lt;a href=&quot;https://www.postgresql.eu/about/membership/&quot;&gt;membership&lt;/a&gt;, which is a fraction of what some other groups charge. You won't get a postgresql.eu email address for your money, but you do get the chance &lt;a href=&quot;https://www.postgresql.eu/about/elections/&quot;&gt;to vote&lt;/a&gt; for PostgreSQL Europe &lt;a href=&quot;https://www.postgresql.eu/about/board/&quot;&gt;board members&lt;/a&gt; of your choosing, at the annual elections. Those four board members (who will become five after the upcoming elections) decide what events and activities the not-for-profit organisation will be involved in, and how to spend the money - what events should be sponsored, what swag should be purchased and so on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Membership is open to anyone resident in geographical Europe (including all of Turkey and Russia), so if you want to join and play a part in the future of PostgreSQL, you can sign up on the &lt;a href=&quot;https://www.postgresql.eu/membership/&quot;&gt;postgresql.eu website&lt;/a&gt;. Don't leave it too long though - you need to be a member for at least a month to be eligible to vote in future elections.&lt;/div&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-4656067437536425910?l=pgsnake.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Dave Page</name>
			<email>noreply@blogger.com</email>
			<uri>http://pgsnake.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Dave's PostgreSQL Blog</title>
			<subtitle type="html">PostgreSQL related musings and ramblings</subtitle>
			<link rel="self" href="http://pgsnake.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-3645070705954691807</id>
			<updated>2010-03-04T16:00:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PostgreSQL Weekly News February 21st 2010</title>
		<link href="http://www.postgresql.org/community/weeklynews/pwn20100221"/>
		<id>http://www.postgresql.org/community/weeklynews/pwn20100221</id>
		<updated>2010-02-21T08:00:00+00:00</updated>
		<content type="html">The final commitfest for 9.0 is winding down.  Thanks to all the
reviewers, etc., who are participating.</content>
		<author>
			<name>PostgreSQL Weekly News</name>
			<uri>http://www.postgresql.org/community/weeklynews/</uri>
		</author>
		<source>
			<title type="html">PostgreSQL Weekly News</title>
			<link rel="self" href="http://wwwmaster.postgresql.org/files/weeklynews.xml"/>
			<id>http://wwwmaster.postgresql.org/files/weeklynews.xml</id>
			<updated>2010-03-08T17:17:20+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Why Blog?</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#February_20_2010_2"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#February_20_2010_2</id>
		<updated>2010-02-20T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;With so many ways of electronically communicating in the Postgres community, why blog?  I have thought about that question and want to
list the various electronically communication methods and their advantages:
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Email:&lt;/strong&gt;  Email is great for task-oriented communication.  It reaches a large audience and allows for deliberate, consensus-oriented
solutions.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#February_20_2010_2&quot;&gt;Continue Reading &amp;raquo;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Python Driver Confusion</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#February_20_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#February_20_2010</id>
		<updated>2010-02-20T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;A few weeks ago I &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2010-02/msg00351.php&quot;&gt;learned&lt;/a&gt; there was serious confusion over the
client-side Python drivers available for Postgres.  This &lt;a href=&quot;http://wiki.postgresql.org/wiki/Python&quot;&gt;chart&lt;/a&gt; shows many Python drivers,
but the recommended libpq-based driver, &lt;a href=&quot;http://initd.org/psycopg/&quot;&gt;Psycopg&lt;/a&gt;, was listed on the chart as
&lt;a href=&quot;http://en.wikipedia.org/wiki/GNU_General_Public_License&quot;&gt;GPL&lt;/a&gt; licensed.  This would require programs that use the driver to also be
GPL licensed.  However, the license is not actually GPL but a complicated
&lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2010-02/msg00354.php&quot;&gt;hybrid license&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Fortunately, the Psycopg author has &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2010-02/msg00728.php&quot;&gt;agreed&lt;/a&gt; to relicense his
Python driver under the &lt;a href=&quot;http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License&quot;&gt;LGPL&lt;/a&gt; in the next release, and there is hope
that Postgres developers will get involved to help add any missing features to the driver.
&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Summary of feedback from FOSDEM devroom</title>
		<link href="http://blog.hagander.net/archives/164-Summary-of-feedback-from-FOSDEM-devroom.html"/>
		<id>http://blog.hagander.net/archives/164-guid.html</id>
		<updated>2010-02-20T14:55:00+00:00</updated>
		<content type="html">&lt;p&gt;I forgot completely to close up the feedback system for our talks at FOSDEM and post the feedback to the speakers. My apologies to all speakers and others who were interested! Thankfully, Marc Balmer reminded me today and the individual ratings for different speakers have been sent off to them.&lt;/p&gt;

&lt;p&gt;When it comes to the aggregated statistics, they look fairly similar to what we saw at &lt;a href=&quot;http://blog.hagander.net/exit.php?url_id=208&amp;amp;entry_id=164&quot; title=&quot;http://blog.hagander.net/archives/157-Feedback-from-pgday.eu.html&quot;&gt;PGDay&lt;/a&gt;. The number of speakers were much lower, and unfortunately so were the number of people giving feedback. But in the end, the results were fairly clear. I am especially happy with the level of knowledge in the speakers we attract. Let's start with the graphs:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://photos.smugmug.com/photos/792547291_59n8Y-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;792547291_59n8Y-O.png&quot; /&gt; &lt;img src=&quot;http://photos.smugmug.com/photos/792547295_EkdBz-O.png&quot; width=&quot;400&quot; height=&quot;200&quot; alt=&quot;792547295_EkdBz-O.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Breaking down the details, I think this shows a great quality of our speakers:&lt;/p&gt;



&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Speaker Quality&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Votes&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Deviation&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Simon Riggs&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;6&lt;/td&gt;
        &lt;td&gt;0.4&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Magnus Hagander&lt;/td&gt;
        &lt;td&gt;4.6&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;0.5&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;David Fetter&lt;/td&gt;
        &lt;td&gt;4.5&lt;/td&gt;
        &lt;td&gt;4&lt;/td&gt;
        &lt;td&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Heikki Linnakangas&lt;/td&gt;
        &lt;td&gt;4.3&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;0.9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Dave Page&lt;/td&gt;
        &lt;td&gt;4.2&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
        &lt;td&gt;1.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Marc Balmer&lt;/td&gt;
        &lt;td&gt;3.4&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;1.7&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Peter Eisentraut&lt;/td&gt;
        &lt;td&gt;3.3&lt;/td&gt;
        &lt;td&gt;7&lt;/td&gt;
        &lt;td&gt;1.0&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;And the level of their knowledge is even higher:&lt;/p&gt;



&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Speaker Knowledge&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Votes&lt;/strong&gt;&lt;/td&gt;
        &lt;td&gt;&lt;strong&gt;Deviation&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Simon Riggs&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;6&lt;/td&gt;
        &lt;td&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Magnus Hagander&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Heikki Linnakangas&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
        &lt;td&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;David Fetter&lt;/td&gt;
        &lt;td&gt;4.8&lt;/td&gt;
        &lt;td&gt;4&lt;/td&gt;
        &lt;td&gt;0.5&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Dave Page&lt;/td&gt;
        &lt;td&gt;4.3&lt;/td&gt;
        &lt;td&gt;10&lt;/td&gt;
        &lt;td&gt;1.1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Peter Eisentraut&lt;/td&gt;
        &lt;td&gt;4.3&lt;/td&gt;
        &lt;td&gt;7&lt;/td&gt;
        &lt;td&gt;1.1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Marc Balmer&lt;/td&gt;
        &lt;td&gt;3.6&lt;/td&gt;
        &lt;td&gt;5&lt;/td&gt;
        &lt;td&gt;1.7&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Even at the bottom of this list, the numbers are very good! Unfortunately, the fairly low number of votes give a high deviation at the bottom of the chart.&lt;/p&gt;

&lt;p&gt;For next time, we'd really like to get more people to leave their feedback. Does anybody have a good idea on how to make that happen?&lt;/p&gt;</content>
		<author>
			<name>Magnus Hagander</name>
			<email>nospam@example.com</email>
			<uri>http://blog.hagander.net/</uri>
		</author>
		<source>
			<title type="html">Magnus Hagander's PostgreSQL blog - PostgreSQL</title>
			<link rel="self" href="http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss"/>
			<id>http://blog.hagander.net/feeds/categories/1-PostgreSQL.rss</id>
			<updated>2010-03-02T06:33:54+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">CeBIT 2010</title>
		<link href="http://psoos.blogspot.com/2010/02/cebit-2010.html"/>
		<id>tag:blogger.com,1999:blog-6695249769823901911.post-852112378192586791</id>
		<updated>2010-02-20T01:22:00+00:00</updated>
		<content type="html">... is coming up soon. &lt;a href=&quot;http://www.cebit.de&quot;&gt;CeBIT&lt;/a&gt; (March 2th to March 6th) is one of the biggest shows for IT and PostgreSQL will have a booth in the Open Source Project Lounge, organized by Andreas Scherbaum. I will staff the booth with Andreas on friday, 2010-03-05. If you are interested, feel free to meet us in hall 2, maybe we see us on friday!&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/6695249769823901911-852112378192586791?l=psoos.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Bernd Helmle</name>
			<email>noreply@blogger.com</email>
			<uri>http://psoos.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">Bernd's Blog</title>
			<link rel="self" href="http://psoos.blogspot.com/feeds/posts/default/-/PostgreSQL"/>
			<id>tag:blogger.com,1999:blog-6695249769823901911</id>
			<updated>2010-03-02T06:33:49+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Removal of Personal Copyrights</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#February_19_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#February_19_2010</id>
		<updated>2010-02-19T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;Postgres does not require copyright assignment from contributors because it is &lt;a href=&quot;http://www.postgresql.org/about/licence&quot;&gt;BSD&lt;/a&gt; licensed.
Unlike the &lt;a href=&quot;http://en.wikipedia.org/wiki/GNU_General_Public_License&quot;&gt;GPL&lt;/a&gt;, there is no enforcement component in the BSD license. 
When code and documentation are contributed to the project, the authors give the project the right to distribute their
contributions under the BSD license.  However, technically, authors also retain full rights to their contributions.  Of course, there
is little practical difference between retaining full rights and obtaining contributions under the BSD license.
&lt;/p&gt;
&lt;p&gt;Anyway, while all work submitted to Postgres is covered under the BSD license, the existence of individual copyright lines in our source
code, e.g. &amp;copy; &lt;em&gt;Joe Coder&lt;/em&gt;, makes company lawyers nervous, so we have a policy of avoiding such content.  Unfortunately, this
policy has been active only during the past five years and was not always universally enforced.  For this reason, we occasionally have to
ask authors for permission to remove their copyright lines, or in drastic cases, rewrite trivial code segments when the author cannot be
contacted.   We perform such cleanups periodically as the personal copyrights are brought to our attention, e.g.
&lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2006-03/msg00483.php&quot;&gt;2006&lt;/a&gt;,
&lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2006-09/msg00332.php&quot;&gt;2006&lt;/a&gt;,
&lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2007-03/msg01446.php&quot;&gt;2007&lt;/a&gt;,
&lt;a href=&quot;http://archives.postgresql.org/pgsql-admin/2009-04/msg00145.php&quot;&gt;2009&lt;/a&gt;,
&lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2010-02/msg00146.php&quot;&gt;2010&lt;/a&gt;.  
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#February_19_2010&quot;&gt;Continue Reading &amp;raquo;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Part(ition)ing Is Such Sweet Sorrow</title>
		<link href="http://people.planetpostgresql.org/dfetter/index.php?/archives/51-Partitioning-Is-Such-Sweet-Sorrow.html"/>
		<id>http://people.planetpostgresql.org/dfetter/index.php?/archives/51-guid.html</id>
		<updated>2010-02-19T04:21:41+00:00</updated>
		<content type="html">There are excellent references on partitioning tables that depend on one table, but what happens when you need to partition the referenced table?&lt;br /&gt;
&lt;br /&gt;
Let's find out! &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/51-Partitioning-Is-Such-Sweet-Sorrow.html#extended&quot;&gt;Continue reading &quot;Part(ition)ing Is Such Sweet Sorrow&quot;&lt;/a&gt;</content>
		<author>
			<name>David Fetter</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/dfetter/</uri>
		</author>
		<source>
			<title type="html">David Fetter's blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/dfetter/index.php?/feeds/index.rss2</id>
			<updated>2010-03-10T18:15:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Postgres University Course Material</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#February_18_2010_2"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#February_18_2010_2</id>
		<updated>2010-02-18T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://web.cecs.pdx.edu/~len/&quot;&gt;Leonard Shapiro&lt;/a&gt; of &lt;a href=&quot;http://www.pdx.edu/&quot;&gt;Portland State University&lt;/a&gt; has created some excellent
Postgres university course material.
&lt;/p&gt;
&lt;p&gt;His first course, &lt;a href=&quot;http://web.cecs.pdx.edu/~len/386/&quot;&gt;Introduction to Databases&lt;/a&gt;, teaches databases from a Postgres
perspective.  His higher-level course, &lt;a href=&quot;http://web.cecs.pdx.edu/~len/587/&quot;&gt;Relational DMBS/Database Internals&lt;/a&gt;,  covers many
aspects of Postgres in greater detail than is covered in the Postgres manuals.  &lt;img src=&quot;http://momjian.us/main/img/blog/small_smile.png&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#February_18_2010_2&quot;&gt;Continue Reading &amp;raquo;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Where Did My Error Come From?</title>
		<link href="http://momjian.us/main/blogs/pgblog/2010.html#February_18_2010"/>
		<id>http://momjian.us/main/blogs/pgblog/2010.html#February_18_2010</id>
		<updated>2010-02-18T17:00:00+00:00</updated>
		<content type="html">&lt;p&gt;I am not sure people are aware that you can find the source code location of any generated server log message.  When
&lt;em&gt;log_error_verbosity&lt;/em&gt; is set to 'verbose', additional details are output that can help diagnose errors.  Specifically, I have added this
to the Postgres 9.0 documentation:
&lt;/p&gt;
&lt;p&gt;&lt;blockquote&gt;
VERBOSE output includes the SQLSTATE error code and the source code file name, function name, and line number that generated the error.
&lt;/blockquote&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog/2010.html#February_18_2010&quot;&gt;Continue Reading &amp;raquo;&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Bruce Momjian</name>
			<email>bruce@momjian.us</email>
			<uri>http://momjian.us/main/blogs/pgblog.html</uri>
		</author>
		<source>
			<title type="html">Bruce Momjian: Postgres Blog</title>
			<subtitle type="html">Bruce Momjian: Postgres Blog</subtitle>
			<link rel="self" href="http://momjian.us/main/rss/pgblog.xml"/>
			<id>http://momjian.us/main/rss/pgblog.xml</id>
			<updated>2010-03-09T23:30:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Got ISO?  Create USB boot image</title>
		<link href="http://dan.langille.org/2010/02/18/got-iso-create-usb-boot-image/"/>
		<id>http://dan.langille.org/?p=278</id>
		<updated>2010-02-18T16:26:30+00:00</updated>
		<content type="html">The liveusb-creator is a cross-platform tool for easily installing live operating systems on to USB flash drives.  It runs on various operating systems and allows you to create a bootable device from an ISO image.
This could be useful for advocacy purposes.</content>
		<author>
			<name>Dan Langille</name>
			<uri>http://dan.langille.org</uri>
		</author>
		<source>
			<title type="html">Dan Langille's Other Diary » PostgreSQL</title>
			<subtitle type="html">He has another more popular diary.  This one is more general.</subtitle>
			<link rel="self" href="http://dan.langille.org/category/postgresql/feed/"/>
			<id>http://dan.langille.org/category/postgresql/feed/</id>
			<updated>2010-03-11T02:00:47+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL - now with added Open Source!</title>
		<link href="http://pgsnake.blogspot.com/2010/02/postgresql-now-with-added-open-source.html"/>
		<id>tag:blogger.com,1999:blog-3645070705954691807.post-7928246285138188734</id>
		<updated>2010-02-18T16:19:39+00:00</updated>
		<content type="html">Some of you may be aware that some time ago, Redhat's legal team changed the description of the PostgreSQL licence (yes, that is correct where I live - please don't email me to tell me I can't spell) from BSD to MIT. After doing some poking around (it helps when your boss's boss is an ex-Redhat exec) it transpired that they considered that our licence looked a lot more like the MIT licence than BSD.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's true that ours doesn't look like the traditional &lt;a href=&quot;http://www.opensource.org/licenses/bsd-license.php&quot;&gt;BSD 3 or 4 clause licences&lt;/a&gt; - some people had already spotted that, but as it came from Berkeley we always just considered it to be a variant on the &lt;a href=&quot;http://www.freebsd.org/copyright/freebsd-license.html&quot;&gt;simplified BSD licence&lt;/a&gt;. The long and short of it was that lawyers said &quot;no they're not the same&quot;, and we said &quot;well it sure ain't MIT&quot; and much discussion ensued.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The solution it seemed, was to try to get our licence recognised and approved by the &lt;a href=&quot;http://www.opensource.org/&quot;&gt;Open Source Initiative&lt;/a&gt;. I originally tried to do it as an official BSD variant, but that wasn't accepted. I then resubmitted it as 'The PostgreSQL License&quot; (yes, I know :-p), which was rejected as it wasn't a generic licence (OSI are trying to ensure that all new licences are resuable). Finally, I submitted it again with placeholders replacing the project name and copyright holder info, and nearly two months later, it's approved!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So there you have it ladies and gents. &quot;The world's most advanced database with freely available source code&quot; now actually is, officially, The world's most advanced Open Source database&quot;!&lt;/div&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-7928246285138188734?l=pgsnake.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Dave Page</name>
			<email>noreply@blogger.com</email>
			<uri>http://pgsnake.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Dave's PostgreSQL Blog</title>
			<subtitle type="html">PostgreSQL related musings and ramblings</subtitle>
			<link rel="self" href="http://pgsnake.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-3645070705954691807</id>
			<updated>2010-03-04T16:00:13+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Speaking at PG East</title>
		<link href="http://pgsnake.blogspot.com/2010/02/speaking-at-pg-east.html"/>
		<id>tag:blogger.com,1999:blog-3645070705954691807.post-2751819940161586900</id>
		<updated>2010-02-18T13:54:42+00:00</updated>
		<content type="html">If you've been involved in the PostgreSQL project at all in the last few years, you'll know that &lt;a href=&quot;http://www.commandprompt.com/blogs/joshua_drake/&quot;&gt;Josh Drake&lt;/a&gt; has been organising the &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;PG East and PG West conference series&lt;/a&gt; since 2007. When we met in Paris at PGDay.EU, JD suggested that I submit a talk for East in March.&lt;br /&gt;&lt;br /&gt;Which I did.&lt;br /&gt;&lt;br /&gt;Which got accepted.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now I'm travelling to Philadelphia in March :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since we spoke though, the crack marketing team here at &lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt; contacted JD and between them hatched a plan to make East the most impressive PostgreSQL conference to date. It'll be held over four days, at the Radisson Plaza - Warwick Hotel in Philadelphia, from March 25th to 28th and will include content for C-level execs and decision makers, as well as the regular crowd of database geeks like me. Of course, there will also be the traditional EnterpriseDB Party on the Friday night - if you haven't been to one of those yet, now's the perfect time to see what you've been &lt;a href=&quot;http://mha.smugmug.com/Conferences/PostgreSQL/PGcon-2008/4996271_oHxtB#300129283_ShZVr&quot;&gt;missing out on&lt;/a&gt;!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you've been toying with the idea of going to a PostgreSQL conference, this is the perfect time to give into the urge and join us in Philly for &lt;a href=&quot;http://www.postgresqlconference.org/2010/east/talks&quot;&gt;database talk&lt;/a&gt;, beer and cheese-steak sandwiches. Mmmmm, cheese-steak....&lt;/div&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-2751819940161586900?l=pgsnake.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Dave Page</name>
			<email>noreply@blogger.com</email>
			<uri>http://pgsnake.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Dave's PostgreSQL Blog</title>
			<subtitle type="html">PostgreSQL related musings and ramblings</subtitle>
			<link rel="self" href="http://pgsnake.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-3645070705954691807</id>
			<updated>2010-03-04T16:00:13+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Getting out of SQL_ASCII, part 1</title>
		<link href="http://blog.tapoueh.org/blog.dim.html#%20Getting%20out%20of%20SQL_ASCII%2C%20part%201"/>
		<id>http://blog.tapoueh.org/blog.dim.html#%20Getting%20out%20of%20SQL_ASCII%2C%20part%201</id>
		<updated>2010-02-18T09:37:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a name=&quot;20100218-11:37&quot; id=&quot;20100218-11:37&quot;&gt;&lt;/a&gt;
&lt;a name=&quot;%20Getting%20out%20of%20SQL_ASCII%2C%20part%201&quot; id=&quot;%20Getting%20out%20of%20SQL_ASCII%2C%20part%201&quot;&gt;&lt;/a&gt;
It happens that you have to manage databases &lt;em&gt;designed&lt;/em&gt; by your predecessor,
and it even happens that the team used to not have a &lt;em&gt;DBA&lt;/em&gt;. Those &lt;em&gt;histerical
raisins&lt;/em&gt; can lead to having a &lt;code&gt;SQL_ASCII&lt;/code&gt; database. The horror!&lt;/p&gt;

&lt;p&gt;What &lt;code&gt;SQL_ASCII&lt;/code&gt; means, if you're not already familiar with the consequences
of such a choice, is that all the &lt;code&gt;text&lt;/code&gt; and &lt;code&gt;varchar&lt;/code&gt; data that you put in the
database is accepted as-is. No checks. At all. It's pretty nice when you're
lazy enough to not dealing with &lt;em&gt;strange&lt;/em&gt; errors in your application, but if
you think that t's a smart move, please go read
&lt;a href=&quot;http://www.joelonsoftware.com/articles/Unicode.html&quot;&gt;The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)&lt;/a&gt;
by &lt;a href=&quot;http://www.joelonsoftware.com/&quot;&gt;Joel Spolsky&lt;/a&gt; now. I said now, I'm waiting for you to get back here. Yes,
I'll wait.&lt;/p&gt;

&lt;p&gt;The problem of course is not being able to read the data you just stored,
which is seldom the use case anywhere you use a database solution such as
&lt;a href=&quot;http://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, it happens too that it's high time to get off of &lt;code&gt;SQL_ASCII&lt;/code&gt;, the
infamous. In our case we're lucky enough in that the data are all in fact
&lt;code&gt;latin1&lt;/code&gt; or about that, and this comes from the fact that all the applications
connecting to the database are sharing some common code and setup. Then we
have some tables that can be tagged &lt;em&gt;archives&lt;/em&gt; and some other &lt;em&gt;live&lt;/em&gt;. This blog
post will only deal with the former category.&lt;/p&gt;

&lt;p&gt;For those tables that are not receiving changes anymore, we will migrate
them by using a simple but time hungry method: &lt;code&gt;COPY OUT|recode|COPY IN&lt;/code&gt;. I've
tried to use &lt;code&gt;iconv&lt;/code&gt; for recoding our data, but it failed to do so in lots of
cases, so I've switched to using the &lt;a href=&quot;http://www.gnu.org/software/recode/recode.html&quot;&gt;GNU recode&lt;/a&gt; tool, which works just fine.&lt;/p&gt;

&lt;p&gt;The fact that it takes so much time doing the conversion is not really a
problem here, as you can do it &lt;em&gt;offline&lt;/em&gt;, while the applications are still
using the &lt;code&gt;SQL_ASCII&lt;/code&gt; database. So, here's the program's help:&lt;/p&gt;

&lt;pre class=&quot;src&quot;&gt;
recode.sh [-npdf0TI] [-U user ] -s schema [-m mintable] pattern
        -d    debug
        -n    dry run, only print table names and expected files
        -s    schema
        -m    mintable, to skip already processed once
        -U    connect to PostgreSQL as user
        -f    force table loading even when export files do exist
        -0    only (re)load tables with zero-sized copy files
        -T    Truncate the tables before COPYing recoded data
        -I    Temporarily drop the indexes of the table while COPYing
   pattern    ^table_name_, e.g.
&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;-I&lt;/code&gt; option is neat enough to create the indexes in parallel, but with no
upper limit on the number of index creation launched. In our case it worked
well, so I didn't have to bother.&lt;/p&gt;

&lt;p&gt;Take a look at the &lt;a href=&quot;http://blog.tapoueh.org/static/recode.sh&quot;&gt;recode.sh&lt;/a&gt; script, and don't hesitate editing it for your
purpose. It's missing some obvious options to get useful in the large, such
as the &lt;code&gt;recode&lt;/code&gt; &lt;em&gt;request&lt;/em&gt; which is currently hardcoded to &lt;code&gt;l1..utf8&lt;/code&gt;. If there's
any demand about it, I'll setup a &lt;a href=&quot;http://github.com/dimitri&quot;&gt;GitHub&lt;/a&gt; project for the little script.&lt;/p&gt;

&lt;p&gt;We'll get back to the subject of this entry in &lt;em&gt;part 2&lt;/em&gt;, dealing with how to
recode your data in the database itself, thanks to some insane regexp based
queries and helper functions. And thanks to a great deal of IRC based
helping, too.&lt;/p&gt;</content>
		<author>
			<name>Dimitri Fontaine</name>
			<uri>http://blog.tapoueh.org/blog.dim.html</uri>
		</author>
		<source>
			<title type="html">tail -f /dev/dim</title>
			<subtitle type="html">dim's PostgreSQL blog</subtitle>
			<link rel="self" href="http://blog.tapoueh.org/blog.dim.xml"/>
			<id>http://blog.tapoueh.org/blog.dim.xml</id>
			<updated>2010-03-04T12:46:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Using PostgreSQL to Decouple Applications, or, OO meets SQL (Part I)</title>
		<link href="http://people.planetpostgresql.org/mbalmer/index.php?/archives/1-Using-PostgreSQL-to-Decouple-Applications,-or,-OO-meets-SQL-Part-I.html"/>
		<id>http://people.planetpostgresql.org/mbalmer/index.php?/archives/1-guid.html</id>
		<updated>2010-02-18T09:36:15+00:00</updated>
		<content type="html">In the object oriented world, people like design patterns, or, elements of reusable software. One such pattern is the &quot;Observer&quot; pattern, where a piece of software, the &quot;Observer&quot;, registers with another piece of software, the &quot;Model&quot;, to be notified when the internal state of the &quot;Model&quot; changes.  The &quot;Observer&quot; can then query the &quot;Model&quot; for the data changed.  This design pattern is often applied in the so-called Model-View-Controller programming paradigm, where a &quot;View&quot; observes a &quot;Model&quot; and a &quot;Controller&quot; changes the state of the &quot;Model&quot;.&lt;br /&gt;
&lt;br /&gt;
What works at the object level in an object oriented programming language can be applied to distributed PostgreSQL applications as well, allowing for proper decoupling of applications or application parts.  The tools needed for this are PostgreSQL's trigger procedures and the asynchronous notification mechanism.  In this first installment of a small series of blog entries, I will talk about the basics needed to implement a distributed decoupled software solution. &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/mbalmer/index.php?/archives/1-Using-PostgreSQL-to-Decouple-Applications,-or,-OO-meets-SQL-Part-I.html#extended&quot;&gt;Continue reading &quot;Using PostgreSQL to Decouple Applications, or, OO meets SQL (Part I)&quot;&lt;/a&gt;</content>
		<author>
			<name>Marc Balmer</name>
			<email>nospam@example.com</email>
			<uri>http://people.planetpostgresql.org/mbalmer/</uri>
		</author>
		<source>
			<title type="html">Marc Balmer's PostgreSQL blog</title>
			<subtitle type="html">My little place on the web...</subtitle>
			<link rel="self" href="http://people.planetpostgresql.org/mbalmer/index.php?/feeds/index.rss2"/>
			<id>http://people.planetpostgresql.org/mbalmer/index.php?/feeds/index.rss2</id>
			<updated>2010-03-02T06:31:34+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Content, Content, Content... Oh My! (PgEast)</title>
		<link href="http://www.commandprompt.com/blogs/joshua_drake/2010/02/content_content_content_oh_my_pgeast/"/>
		<id>http://www.commandprompt.com/blogs/joshua_drake/2010/02/content_content_content_oh_my_pgeast/</id>
		<updated>2010-02-17T17:54:00+00:00</updated>
		<content type="html">When we moved PostgreSQL Conference East (&lt;a href=&quot;http://www.postgresql.us/purchase&quot;&gt;register here&lt;/a&gt;)from a three day to a four day conference, I was concerned about our ability to pull it off. Primarily our conferences have been centered about the who's who of PostgreSQL. A nice mix of known contributors and avid users. A lot of the users, we would already knew as they contribute on the lists.

&lt;br /&gt;The migration to four days caused a need to expand our base. We actively starting soliciting from decision makers, educators, users and community contributors. I also know that several of our sponsors have been doing the same. So far it has paid off, we have more registrations at this point, than we have had at any other point historically for one of the PostgreSQL Conferences. The change seems to have been a true blessing.
&lt;br /&gt;
The influx of talks has been amazing. We don't have them &lt;a href=&quot;http://www.postgresqlconference.org/2010/east/talks&quot;&gt;all up yet but you can get a taste here.&lt;/a&gt; What I find truly great, is the amount of diversity in the talks. We have case studies from &lt;a href=&quot;http://www.vonage.com/&quot;&gt;Vonage&lt;/a&gt;, in depth security talks from Magnus Hagander, Advanced talks on Transaction Isolation; even Core member Dave Page is crossing the pond to talk about the PostgreSQL Infrastructure. There seems no better time to hit &lt;a href=&quot;http://www.postgresqlconference.org/&quot;&gt;the PostgreSQL Conference series&lt;/a&gt; than now. There is going to be content for everyone.
&lt;br /&gt;
We have also kept up our promise to integrate tertiary communities into the conference with content on PostGIS, PHP, Python, Ruby and Grails. 
&lt;br /&gt;
I was truly skeptical of the conference change. My hat is off to Platinum Sponsor &lt;a href=&quot;http://www.enterprisedb.com/&quot;&gt;EnterpriseDB&lt;/a&gt; for convincing me it was a good idea.</content>
		<author>
			<name>Joshua D. Drake</name>
			<uri>http://www.commandprompt.com/blogs/joshua_drake/</uri>
		</author>
		<source>
			<title type="html">CMD: Joshua Drake's Blog</title>
			<subtitle type="html">Command Prompt Blog Feed: Joshua Drake's Blog</subtitle>
			<link rel="self" href="http://www.commandprompt.com/rss/blogs/joshua_drake"/>
			<id>http://www.commandprompt.com/rss/blogs/joshua_drake</id>
			<updated>2010-03-11T02:45:22+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Waiting for 9.0 – extended frames for window functions</title>
		<link href="http://www.depesz.com/index.php/2010/02/17/waiting-for-9-0-extended-frames-for-window-functions/"/>
		<id>http://www.depesz.com/?p=1599</id>
		<updated>2010-02-17T14:14:47+00:00</updated>
		<content type="html">On 12th of February Tom Lane http://archives.postgresql.org/pgsql-committers/2010-02/msg00142.php patch by Hitoshi Harada:
Log Message:
-----------
Extend the set of frame options supported for window functions.
&amp;#160;
This patch allows the frame to start from CURRENT ROW (in either RANGE or
ROWS mode), and it also adds support for ROWS n PRECEDING and ROWS n FOLLOWING
start and end points.  (RANGE value PRECEDING/FOLLOWING [...]</content>
		<author>
			<name>Hubert Lubaczewski</name>
			<uri>http://www.depesz.com</uri>
		</author>
		<source>
			<title type="html">select * from depesz; » postgresql</title>
			<link rel="self" href="http://www.depesz.com/index.php/tag/postgresql/feed/"/>
			<id>http://www.depesz.com/index.php/tag/postgresql/feed/</id>
			<updated>2010-03-09T23:31:18+00:00</updated>
		</source>
	</entry>

</feed>
