<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

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

<item>
	<title>Peter Eisentraut: New Job at Sun</title>
	<guid>http://people.planetpostgresql.org/peter/index.php?/archives/30-guid.html</guid>
	<link>http://people.planetpostgresql.org/peter/index.php?/archives/30-New-Job-at-Sun.html</link>
	<description>On July 22nd, 2008, I will be joining &lt;a href=&quot;http://www.sun.com/&quot;&gt;Sun Microsystems&lt;/a&gt; as PostgreSQL software engineer.  Sun has been a valuable contributor to the PostgreSQL project for a&lt;br /&gt;
number of years now, and I am looking forward to joining them in this effort.&lt;br /&gt;
I am glad that I will be able to continue my personal role in the PostgreSQL&lt;br /&gt;
project with the support of the great resources that Sun provides.&lt;br /&gt;
&lt;br /&gt;
I would like to take this opportunity as well to thank my former colleagues at&lt;br /&gt;
&lt;a href=&quot;http://www.credativ.de/&quot;&gt;credativ GmbH&lt;/a&gt; for their support of the PostgreSQL project and my own career.  I wish them much success in their continued development.&lt;br /&gt;
&lt;br /&gt;
So, I expect that I will have more time to contribute to PostgreSQL&lt;br /&gt;
development from now on, and both Sun and I have a sizeable backlog of&lt;br /&gt;
projects and ideas that we would like to realize.  Time to get started!</description>
	<pubDate>Sun, 20 Jul 2008 21:30:17 +0000</pubDate>
</item>
<item>
	<title>Jignesh K. Shah: Peter Eisentraut joins Sun Microsystems</title>
	<guid>http://people.planetpostgresql.org/jkshah/index.php?/archives/6-guid.html</guid>
	<link>http://people.planetpostgresql.org/jkshah/index.php?/archives/6-Peter-Eisentraut-joins-Sun-Microsystems.html</link>
	<description>&lt;br /&gt;
&lt;p&gt;Just read the news  on  &lt;a href=&quot;http://blogs.sun.com/ontherecord/entry/postgresql_community_core_team_member&quot;&gt;Sun's On The Record blog entry&lt;/a&gt; that Peter Eisentraut is joining Sun Microsystems.&lt;a href=&quot;http://blogs.sun.com/jkshah/entry/peter_eisentraut_joining_sun&quot;&gt; [Read More]&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 20 Jul 2008 21:21:29 +0000</pubDate>
</item>
<item>
	<title>Josh Berkus: Sun Rise, Sun Set</title>
	<guid>http://rss.ittoolbox.com/rss/26078@http://blogs.ittoolbox.com/database/soup</guid>
	<link>http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/database/soup/archives/sun-rise-sun-set-26078</link>
	<description>After two years as Sun's PostgreSQL Lead, I'm leaving to pursue other opportunities.  This does &lt;i&gt;not&lt;/i&gt; mean that Sun is dropping PostgreSQL; far from it.  Instead my fellow core team member Peter Eisentraut is taking over my role leading the PostgreSQL team at Sun.</description>
	<pubDate>Sun, 20 Jul 2008 18:22:07 +0000</pubDate>
</item>
<item>
	<title>Leo Hsu and Regina Obe: More Database Comparisons</title>
	<guid>http://www.postgresonline.com/journal/index.php?/archives/62-guid.html</guid>
	<link>http://www.postgresonline.com/journal/index.php?/archives/62-More-Database-Comparisons.html</link>
	<description>&lt;p&gt;As many people who know us know we sit on several camps especially when it comes to databases.  
The camps we sit on are growing rather than shrinking.
While we do have our favorites, we understand that peoples needs and comfort levels are different from ours and we try to take that into 
consideration when making recommendations to people.  The only thing that is generally true about the clientele we consult for is that they
fit one of the following features:
&lt;ul&gt;
&lt;li&gt;Very minimal bureaucratic structure - this generally rules out most fortune 500 companies 
and shall we say smaller companies who are too bureaucratic for their own good&lt;/li&gt;
&lt;li&gt;Dot com startups/Niche product developers who are looking to keep costs down to a minimum without too much fuss and are trying to produce a product to change the world&lt;/li&gt;
&lt;li&gt;Small companies who have a relatively low IT budget, but are predominantly windows-based&lt;/li&gt;
&lt;li&gt;Mid-sized companies predominantly windows-based or departments with decent IT staff, 
who are looking for something their staff can easily maintain rather than simply keeping licensing costs down&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;It has come up as a topic of discussion, now that SQL Server 2008 is coming out soon and with its new fangled geodetic spatial support, 
 how does this change things?&lt;/p&gt;
&lt;p&gt;The short answer is - not much except to increase awareness of spatial databases and to give us more business. As part of our due diligence work
we have put together a comparison of the 3 databases spatial functionality - 
&lt;a href=&quot;http://www.bostongis.com/PrinterFriendly.aspx?content_name=sqlserver2008_postgis_mysql_compare&quot; target=&quot;_blank&quot;&gt;Cross Compare SQL Server 2008 Spatial, PostgreSQL/PostGIS 1.3-1.4, MySQL 5-6&lt;/a&gt;
to compliment our &lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/51-Cross-Compare-of-SQL-Server,-MySQL,-and-PostgreSQL.html&quot; target=&quot;_blank&quot;&gt;Cross Compare of SQL Server, MySQL, and PostgreSQL&lt;/a&gt;
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/62-More-Database-Comparisons.html#extended&quot;&gt;Continue reading &quot;More Database Comparisons&quot;&lt;/a&gt;</description>
	<pubDate>Sat, 19 Jul 2008 23:00:30 +0000</pubDate>
</item>
<item>
	<title>Josh Berkus: State Of Lightning Talks 2008 "Final" Program</title>
	<guid>http://rss.ittoolbox.com/rss/26077@http://blogs.ittoolbox.com/database/soup</guid>
	<link>http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/database/soup/archives/state-of-lightning-talks-2008-final-program-26077</link>
	<description>&lt;p&gt;
For three years now, OSCON has provided a 90-minute session for open source projects to update OSCON attendees on &quot;what's going on this year.&quot;  If you're new to open source, it's a great way to get an idea of the scope of open source software out there.  If you're an OSS geek, it's a chance to see what's new with your favorite projects.  
&lt;/p&gt;&lt;p&gt;
Most importantly, with each presentation strictly limited to 5 minutes (using the &quot;Hourglass of Death&quot;) and some &quot;zinger&quot; presentations, SOLT is&lt;/p&gt;</description>
	<pubDate>Sat, 19 Jul 2008 03:21:14 +0000</pubDate>
</item>
<item>
	<title>Josh Berkus: PostgreSQL at OSCON</title>
	<guid>http://rss.ittoolbox.com/rss/26049@http://blogs.ittoolbox.com/database/soup</guid>
	<link>http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/database/soup/archives/postgresql-at-oscon-26049</link>
	<description>As always, we're going to have a lot of PostgreSQL activity around OSCON.  Here's my list of things to see and do ...</description>
	<pubDate>Thu, 17 Jul 2008 20:06:40 +0000</pubDate>
</item>
<item>
	<title>Greg Sabino Mullane: check_postgres 2.0.1 is released</title>
	<guid>http://people.planetpostgresql.org/greg/index.php?/archives/138-guid.html</guid>
	<link>http://people.planetpostgresql.org/greg/index.php?/archives/138-check_postgres-2.0.1-is-released.html</link>
	<description>&lt;p&gt;I just released version 2.0.1 of the 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=711&amp;amp;entry_id=138&quot; title=&quot;http://bucardo.org/check_postgres/&quot;&gt;check_postgres.pl&lt;/a&gt; program. While in the past this script was strictly for use as a 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=712&amp;amp;entry_id=138&quot; title=&quot;http://nagios.org&quot;&gt;Nagios&lt;/a&gt; plugin, it now features two additional output modes. While Nagios is still the default, you can now ask for 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=713&amp;amp;entry_id=138&quot; title=&quot;Multi Router Traffic Grapher&quot;&gt;MRTG&lt;/a&gt; and &quot;simple&quot; output by using the &lt;b&gt;--output=&lt;/b&gt; option. The MRTG option outputs four lines of information, with the first always being a simple number. The &quot;simple&quot; output mode simply outputs the first line of the MRTG output - in other words, a single number, nothing more and nothing less. This is very useful for times when you just want to check the state of something without worrying about setting warning limits, querying exit codes, etc. See the 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=714&amp;amp;entry_id=138&quot; title=&quot;http://bucardo.org/check_postgres/check_postgres.pl.html&quot;&gt;the documentation&lt;/a&gt; for complete details.&lt;/p&gt;

&lt;p&gt;This version also greatly speeds up the &quot;check_bloat&quot; action, which gives a rough estimate of how bloated the tables and indexes in your database are. Rather than use a large regex to parse the output, it now simply does a &lt;tt&gt;split&lt;/tt&gt;. Kudos goes to the new version of 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=715&amp;amp;entry_id=138&quot; title=&quot;Thanks, Adam and Tim&quot;&gt;the Devel::NYTProf module&lt;/a&gt;, which pointed out that particular bottleneck quite easily (and colorfully!).&lt;/p&gt;

&lt;p&gt;New ideas and patches always welcome, just mail 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=716&amp;amp;entry_id=138&quot; title=&quot;https://mail.endcrypt.com/mailman/listinfo/check_postgres&quot;&gt;the list&lt;/a&gt; or play around with the 
&lt;a href=&quot;http://people.planetpostgresql.org/greg/exit.php?url_id=717&amp;amp;entry_id=138&quot; title=&quot;http://git.or.cz/&quot;&gt;git&lt;/a&gt; repository.&lt;/p&gt;</description>
	<pubDate>Wed, 16 Jul 2008 22:42:56 +0000</pubDate>
</item>
<item>
	<title>Leo Hsu and Regina Obe: SQL Idiom Design Patterns</title>
	<guid>http://www.postgresonline.com/journal/index.php?/archives/61-guid.html</guid>
	<link>http://www.postgresonline.com/journal/index.php?/archives/61-SQL-Idiom-Design-Patterns.html</link>
	<description>&lt;p&gt;Programming Design Patterns define recommended approaches of solving common application problems.  Within design patterns is a subset of design patterns called &lt;a href=&quot;http://en.wikipedia.org/wiki/Programming_idiom&quot; target=&quot;_blank&quot;&gt;Idioms&lt;/a&gt;.
Idioms you can think of as a strategy for expressing recurring constructs or if you will sub-problems and often take advantage of the special features of a language.  
They tend to be specific to a programming language and can not be reused
in other languages they were not specifically designed for.  To demonstrate the differences lets compare two design patterns we commonly use.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/61-SQL-Idiom-Design-Patterns.html#extended&quot;&gt;Continue reading &quot;SQL Idiom Design Patterns&quot;&lt;/a&gt;</description>
	<pubDate>Mon, 14 Jul 2008 12:19:02 +0000</pubDate>
</item>
<item>
	<title>David Fetter: PostgreSQL Weekly News - July 13 2008</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/181-guid.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/181-PostgreSQL-Weekly-News-July-13-2008.html</link>
	<description>&lt;strong&gt;PostgreSQL Weekly News - July 13 2008&lt;/strong&gt;
&lt;br /&gt;

&lt;strong&gt;PostgreSQL Product News&lt;/strong&gt;
&lt;br /&gt;

Open Technology Group has created a high-availability training course.
&lt;br /&gt;
http://www.otg-nc.com/training-courses/coursedetail.php?courseid=65&amp;amp;cat_id=8
 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/181-PostgreSQL-Weekly-News-July-13-2008.html#extended&quot;&gt;Continue reading &quot;PostgreSQL Weekly News - July 13 2008&quot;&lt;/a&gt;</description>
	<pubDate>Mon, 14 Jul 2008 02:34:00 +0000</pubDate>
</item>
<item>
	<title>Robert Hodges: PostgreSQL Gets Religion About Replication</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-3867773704846744344</guid>
	<link>http://scale-out-blog.blogspot.com/2008/06/postgresql-gets-religion-about.html</link>
	<description>The PostgreSQL community is getting really serious about replication.  On Thursday May 29th, Tom Lane issued a &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php&quot;&gt;manifesto&lt;/a&gt; concerning database replication on behalf of the &lt;a href=&quot;http://www.postgresql.org/community/contributors/&quot;&gt;PostgreSQL core team&lt;/a&gt; to the &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/&quot;&gt;pgsql-hackers mailing list&lt;/a&gt;.  Tom's post basically said that lack of easy-to-use, built-in replication is a significant obstacle to wider adoption of PostgreSQL and proposed a technical solution based on log shipping, which is already a well-developed and useful feature.&lt;br /&gt;&lt;br /&gt;What was the reaction?  The post generated close to 140 responses within the next two days, with a large percentage of the community weighing in.   It's one of the most significant announcements on the list in recent history.   There is pent up demand for this feature and within a few hours people were already deep into the details of the implementation.&lt;br /&gt;&lt;br /&gt;The basic idea comes from an excellent &lt;a href=&quot;http://www.pgcon.org/2008/schedule/events/76.en.html&quot;&gt;presentation&lt;/a&gt; by Takahiro Itagaki and Masao Fujii of NTT at PGCon 2008 in Ottawa.  They have developed a system that replicates database log records synchronously to a standby database.  The standby can recover quickly and without data loss, which makes it a good availability solution.  The core team manifesto proposes to integrate this into the PostgreSQL core and add the ability to open the standby for reads.&lt;br /&gt;&lt;br /&gt;So, is this the end of the story on replication?  I don't think so.  There's no question that synchronous log shipping with reads would be a great feature. Basic availability is the first problem users run into when setting up production systems and this feature looks considerably better than alternatives for other databases like MySQL.   It will help if NTT donates their code to the community, but still the whole effort will take considerable time.   Adding the ability to open a standby for reads is at least a version out (read:  up to 2 years).&lt;br /&gt;&lt;br /&gt;More importantly, log shipping is most useful for availability.  It does not help you replicate across database versions (nice for upgrades), between different databases, from a master to large numbers of slaves, or bi-directionally between databases.  Finally, it's a less than ideal solution for clustering data between sites, something that is rapidly becoming one of the most important overall uses of replication.  For these and other cases you need logical replication, which turns log records into SQL statements and applies them using a client.&lt;br /&gt;&lt;br /&gt;I'm therefore starting an effort to get logical replication hooks included as a parallel effort.  If you are interested in this let me know.   Meanwhile, stay tuned.  Tom's message represents a real change of heart for the PostgreSQL community.   Accepting the important of replication opens up the doors for a new round of innovation in scale-out based on PostgreSQL.  It could not come at a better time.</description>
	<pubDate>Mon, 14 Jul 2008 00:03:48 +0000</pubDate>
</item>
<item>
	<title>Robert Hodges: Myosotis Connector: a Fast SQL Proxy for MySQL and PostgreSQL</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-4971297649445164412</guid>
	<link>http://scale-out-blog.blogspot.com/2008/05/myosotis-connector-fast-sql-proxy-for.html</link>
	<description>SQL proxies have been very much in the news lately, especially for open source databases.  &lt;a href=&quot;http://forge.mysql.com/wiki/MySQL_Proxy&quot;&gt;MySQL Proxy&lt;/a&gt; and &lt;a href=&quot;http://pgpool.projects.postgresql.org/&quot;&gt;PG-Pool&lt;/a&gt; are just two examples.  Here is another proxy you should look at:  &lt;a href=&quot;http://myosotis.continuent.org/&quot;&gt;Myosotis&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Myosotis is a 'native-client' to JDBC proxy for MySQL and PostgreSQL clients.  We originally developed it to allow clients to attach to our &lt;a href=&quot;http://sequoia.continuent.org/&quot;&gt;Java-based middleware clusters&lt;/a&gt; without using a JDBC driver.  Myosotis parses the native wire protocol request from the client, issues a corresponding JDBC call, and returns the results back to the client.   As you can probably infer, it's written in Java.  &quot;Myosotis&quot; incidentally is the scientific name for &quot;Forget-Me-Not,&quot; a  humble but strikingly beautiful flower.&lt;br /&gt;&lt;br /&gt;Myosotis is still rather simple but it already has a couple of very interesting features.  First, it works for both MySQL and PostgreSQL.  That's a good start.   Wire protocols are very time-consuming to implement.  Another feature is that Myosotis is really fast.  This deserves  explanation and some proof.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pero.blogs.aprilmayjune.org/2008/05/05/benchmark-mysql-proxy-and-hscale/&quot;&gt;As other people have discovered&lt;/a&gt;, proxying is very CPU-intensive.  It also involves a lot of concurrency, since a proxy may have to manage hundreds or even thousands of connections.  Java is already fast in single threads--after a few runs through method invocations, the JVM has compiled the bytecodes down to native machine code.  In addition, Java uses multiple CPUs relatively efficiently.  Myosotis uses a thread per connection.   Java automatically schedules these on all CPUs and optimizes of memory access in multi-core environment.&lt;br /&gt;&lt;br /&gt;We can show Myosotis throughput empirically using &lt;a href=&quot;http://bristlecone.continuent.org/&quot;&gt;Bristlecone&lt;/a&gt;, an open source test framework we wrote to measure performance of database clusters.  We test proxy throughput by issuing do-nothing queries as quickly as possible with varying numbers of threads.   The following run compares Myosotis against a &lt;a href=&quot;http://www.continuent.com/&quot;&gt;uni/cluster 2007.1&lt;/a&gt; process (a much more complex commercial middleware clustering software) and MySQL Proxy 0.6.1 running without Lua scripts.   The proxy test environment is a Dell SC 1425 with 4 cores running CentOS5 and MySQL 5.1.23.  &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bp3.blogger.com/_26KnjtB2MFo/SDY0qm5F79I/AAAAAAAAACQ/LJtwZ7CRljY/s1600-h/ProxyQueryThroughput.jpg&quot;&gt;&lt;img src=&quot;http://bp3.blogger.com/_26KnjtB2MFo/SDY0qm5F79I/AAAAAAAAACQ/LJtwZ7CRljY/s400/ProxyQueryThroughput.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5203404326072348626&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The results are striking.  Myosotis gets between 3000 and 3500 queries per second when 8 threads are simultaneously running queries.   To demonstrate processor scaling,  run &lt;a href=&quot;http://htop.sourceforge.net/&quot;&gt;htop&lt;/a&gt; when the Myosotis Connector is being tested.   You see something like this--a nice distribution across 4 cores.&lt;br /&gt;&lt;a href=&quot;http://bp1.blogger.com/_26KnjtB2MFo/SDiRhm5F7-I/AAAAAAAAACY/RDPMMtxSk_I/s1600-h/myosotis-connector-2007.1.2.jpg&quot;&gt;&lt;img src=&quot;http://bp1.blogger.com/_26KnjtB2MFo/SDiRhm5F7-I/AAAAAAAAACY/RDPMMtxSk_I/s400/myosotis-connector-2007.1.2.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5204069375988330466&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Myosotis is a very simple proxy now but it has the foundation to create something great.  We have big plans for Myosotis--it's a key part of our &lt;a href=&quot;http://scale-out-blog.blogspot.com/2008/05/tungsten-scale-out-stack-presentation.html&quot;&gt;Tungsten architecture for database scale-out&lt;/a&gt;, which we will be rolling out later in the summer.  The next step is to add routing logic so that we can implement load balancing and failover.  We'll be doing that over the next few months.  Meanwhile, if you want to see how fast Java proxies for SQL can be, check us out at at &lt;a href=&quot;http://myosotis.continuent.org/&quot;&gt;http://myosotis.continuent.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;p.s., If you want to repeat the test shown here on your own proxy, download &lt;a href=&quot;http://bristlecone.continuent.org/&quot;&gt;Bristlecone&lt;/a&gt; and try it out.  I used the ReadSimpleScenario test, which is specifically designed to check middleware latency.&lt;br /&gt;</description>
	<pubDate>Mon, 14 Jul 2008 00:02:52 +0000</pubDate>
</item>
<item>
	<title>Hubert Lubaczewski: Suppressing CONTEXT lines in psql</title>
	<guid>http://www.depesz.com/?p=1219</guid>
	<link>http://www.depesz.com/index.php/2008/07/12/suppressing-context-lines-in-psql/</link>
	<description>CONTEXT messages are quite informative, but when you don&amp;#8217;t need them, they can be real pain in the eyes:
psql:trees.sql:68: NOTICE:  Adding tree structures to table public.testit.
CONTEXT:  SQL function &quot;add_tree_structure&quot; statement 1
psql:trees.sql:68: NOTICE:  Tree table will be public.testit_tree.
CONTEXT:  SQL function &quot;add_tree_structure&quot; statement 1
psql:trees.sql:68: NOTICE:  Primary key in source table is: id
CONTEXT: [...]</description>
	<pubDate>Sat, 12 Jul 2008 12:40:56 +0000</pubDate>
</item>
<item>
	<title>Selena Deckelmann: PDXPUG Day on July 20 - Register now!</title>
	<guid>http://www.chesnok.com/daily/2008/07/10/pdxpug-day-on-july-20-register-now/</guid>
	<link>http://www.chesnok.com/daily/2008/07/10/pdxpug-day-on-july-20-register-now/</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;a href=&quot;http://db.endpoint.com/pgcon07/Images/Originals/2007-10-20_5171.jpg&quot;&gt;&lt;img src=&quot;http://www.chesnok.com/daily/wp-content/uploads/2008/07/2007-10-20_5171.jpg&quot; alt=&quot;pgday 2007&quot; width=&quot;400px&quot; /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;
&lt;center&gt;&lt;font size=&quot;-3&quot;&gt;photo courtesy of Dan Browning&lt;/font&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;Registration for PDXPUG Day on July 20, 2008 is &lt;a href=&quot;http://spreadsheets.google.com/viewform?key=paoTJ9uEi8vIqumUzwzrCAw&amp;#038;hl=en&quot;&gt;open&lt;/a&gt;!  Please &lt;a href=&quot;http://spreadsheets.google.com/viewform?key=paoTJ9uEi8vIqumUzwzrCAw&amp;#038;hl=en&quot;&gt;sign up&lt;/a&gt; and let us know what size t-shirt you&amp;#8217;d like. We&amp;#8217;re requesting a $20 donation (by cash or check) at the door.  All proceeds to to Software in the Public Interest, a 501(c)3 organization that is used to fund PostgreSQL advocacy.  &lt;/p&gt;
&lt;p&gt;Registration for OSCON is &lt;strong&gt;not&lt;/strong&gt; required to attend. &lt;/p&gt;
&lt;p&gt;Registering also gets you in the door at the Gotham Tavern, our after-party location close to the convention center!&lt;/p&gt;
&lt;p&gt;Our line-up of talks includes: &lt;/p&gt;
&lt;p&gt;PostgreSQL Unit Testing with pgTAP - David Wheeler&lt;br /&gt;
Inside the PostgreSQL Shared Buffer Cache - Greg Smith&lt;br /&gt;
Muldis D - Portable Databases At Full Power - Darren Duncan&lt;br /&gt;
A Streaming Database Talk - Rafael J. Fernández-Moctezuma&lt;br /&gt;
Using GLORP to connect Squeak Smalltalk to PostgreSQL - RandalSchwartz&lt;br /&gt;
Fighting Disease with PostgreSQL Full Text Search and JRuby on Rails - Mike Herrick&lt;br /&gt;
All Your GIS Are Belong to You - Abe Gillespie&lt;br /&gt;
What&amp;#8217;s PgUS - Joshua Drake&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://spreadsheets.google.com/viewform?key=paoTJ9uEi8vIqumUzwzrCAw&amp;#038;hl=en&quot;&gt;Sign up&lt;/a&gt; today!&lt;/p&gt;</description>
	<pubDate>Thu, 10 Jul 2008 14:01:15 +0000</pubDate>
</item>
<item>
	<title>Andrew Dunstan: More fun with encoding</title>
	<guid>http://people.planetpostgresql.org/andrew/index.php?/archives/26-guid.html</guid>
	<link>http://people.planetpostgresql.org/andrew/index.php?/archives/26-More-fun-with-encoding.html</link>
	<description>This time my client needed a way to fix invalid UTF8 encoding in place, without dumping cleaning and reloading.&lt;br /&gt;
&lt;br /&gt;
I lightheartedly promised to do this in a plperl function. It proved to be somewhat trickier than I imagined. However, after a little research and a couple of false starts, I managed to come up with this plperlu function. &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/andrew/index.php?/archives/26-More-fun-with-encoding.html#extended&quot;&gt;Continue reading &quot;More fun with encoding&quot;&lt;/a&gt;</description>
	<pubDate>Thu, 10 Jul 2008 13:07:09 +0000</pubDate>
</item>
<item>
	<title>Josh Berkus: Happy birthday, Elephant!</title>
	<guid>http://rss.ittoolbox.com/rss/25872@http://blogs.ittoolbox.com/database/soup</guid>
	<link>http://networking.ittoolbox.com/r/rss.asp?url=http://blogs.ittoolbox.com/database/soup/archives/happy-birthday-elephant-25872</link>
	<description>The PostgreSQL project is 12 years old today.</description>
	<pubDate>Tue, 08 Jul 2008 18:16:20 +0000</pubDate>
</item>
<item>
	<title>David Fetter: PostgreSQL Weekly News - July 06 2008</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/180-guid.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/180-PostgreSQL-Weekly-News-July-06-2008.html</link>
	<description>&lt;strong&gt;PostgreSQL Weekly News - July 06 2008&lt;/strong&gt;
&lt;br /&gt;

The July CommitFest has begun.  Start reviewing :)
&lt;br /&gt;
http://wiki.postgresql.org/wiki/CommitFest&lt;a href=&quot;http://example.com/new.php?page=CommitFest&quot;&gt;?&lt;/a&gt;:2008-07
 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/180-PostgreSQL-Weekly-News-July-06-2008.html#extended&quot;&gt;Continue reading &quot;PostgreSQL Weekly News - July 06 2008&quot;&lt;/a&gt;</description>
	<pubDate>Mon, 07 Jul 2008 04:05:06 +0000</pubDate>
</item>
<item>
	<title>Leo Hsu and Regina Obe: YUM 2: Almost Idiot's Guide to upgrade from PostgreSQL 8.3.1 to 8.3.3</title>
	<guid>http://www.postgresonline.com/journal/index.php?/archives/60-guid.html</guid>
	<link>http://www.postgresonline.com/journal/index.php?/archives/60-YUM-2-Almost-Idiots-Guide-to-upgrade-from-PostgreSQL-8.3.1-to-8.3.3.html</link>
	<description>&lt;p&gt;In our April Issue &lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/45-An-Almost-Idiots-Guide-to-PostgreSQL-YUM.html&quot; target=&quot;_blank&quot;&gt;An Almost Idiot's Guide to PostgreSQL YUM&lt;/a&gt; 
we covered using the new PostgreSQL Yum repository to install the PostgreSQL 8.3.1 release on Fedora, RedHat Enterprise, and CentOS.  We also received numerous useful feedback from others on issues they
ran into and how they overcame them.  The blog comments are definitely worth a read.&lt;/p&gt;

&lt;p&gt;Now that 8.3.3 has come out, many of you should be considering upgrading if you haven't already since there are a couple of bug fixes as outlined in 
&lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/release-8-3-2.html&quot; target=&quot;_blank&quot;&gt;http://www.postgresql.org/docs/8.3/static/release-8-3-2.html&lt;/a&gt;, &lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/release-8-3-3.html&quot; target=&quot;_blank&quot;&gt;http://www.postgresql.org/docs/8.3/static/release-8-3-3.html&lt;/a&gt;,
and for those running 8.3.0 you will need to reindex your tables after as noted in &lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/release-8-3-1.html&quot; target=&quot;_blank&quot;&gt;http://www.postgresql.org/docs/8.3/static/release-8-3-1.html&lt;/a&gt;.  
If you are running version 8.3.1 and above then
this is a fairly painless upgrade that just requires you to backup your data as a precautionary measure, but doesn't require a dump reload.
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/60-YUM-2-Almost-Idiots-Guide-to-upgrade-from-PostgreSQL-8.3.1-to-8.3.3.html#extended&quot;&gt;Continue reading &quot;YUM 2: Almost Idiot's Guide to upgrade from PostgreSQL 8.3.1 to 8.3.3&quot;&lt;/a&gt;</description>
	<pubDate>Sun, 06 Jul 2008 10:34:00 +0000</pubDate>
</item>
<item>
	<title>Robert Treat: Index pruning techniques</title>
	<guid>http://people.planetpostgresql.org/xzilla/index.php?/archives/351-guid.html</guid>
	<link>http://people.planetpostgresql.org/xzilla/index.php?/archives/351-Index-pruning-techniques.html</link>
	<description>Index pruning&lt;br /&gt;
&lt;br /&gt;
Last week I ran across two different blog posts discussing removing &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2985&amp;amp;entry_id=351&quot; title=&quot;http://sqlblog.com/blogs/paul_nielsen/archive/2008/06/25/find-duplicate-indexes.aspx&quot;&gt;duplicate&lt;/a&gt; and &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2986&amp;amp;entry_id=351&quot; title=&quot;http://arjen-lentz.livejournal.com/122399.html&quot;&gt;useless&lt;/a&gt; indexes from a database. Coincidentally, I have a nagging TODO item to clean up some indexes in the schema on one of the applications &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2987&amp;amp;entry_id=351&quot; title=&quot;http://omniti.com/does/design-and-development&quot;&gt;we have been developing&lt;/a&gt;. So, with inspiration in hand, here are some techniques to clean up your indexes.&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/xzilla/index.php?/archives/351-Index-pruning-techniques.html#extended&quot;&gt;Continue reading &quot;Index pruning techniques&quot;&lt;/a&gt;</description>
	<pubDate>Fri, 04 Jul 2008 15:48:01 +0000</pubDate>
</item>
<item>
	<title>Francisco Figueiredo Jr: Finally post my PGCon2008 pictures!!</title>
	<guid>tag:blogger.com,1999:blog-15237920.post-3943818885593023441</guid>
	<link>http://fxjr.blogspot.com/2008/07/finally-post-my-pgcon2008-pictures.html</link>
	<description>Hi all,
I finally post my pictures from PGCon2008.
You can see them on my picasa web album.</description>
	<pubDate>Fri, 04 Jul 2008 00:19:31 +0000</pubDate>
</item>
<item>
	<title>Devrim Gündüz: Looking for a presentation regarding HOT?</title>
	<guid>http://people.planetpostgresql.org/devrim/index.php?/archives/117-guid.html</guid>
	<link>http://people.planetpostgresql.org/devrim/index.php?/archives/117-Looking-for-a-presentation-regarding-HOT.html</link>
	<description>&lt;br /&gt;
In case you missed this, &lt;a target=&quot;_blank&quot; href=&quot;http://www.pgcon.org/2008/schedule/attachments/54_PGCon2008-HOT.ppt&quot;&gt;here&lt;/a&gt; is a very good presentation about HOT. Oscar goes to Pavan Deolasse. (I prepared a Turkish presentation regarding MVCC,Vacuum,Bgwriter and HOT, and you can also find it &lt;a target=&quot;_blank&quot; href=&quot;http://www.gunduz.org/download.php?dlid=164&quot;&gt;here&lt;/a&gt;, if you know Turkish &lt;img src=&quot;http://people.planetpostgresql.org/devrim/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt; ) &lt;p&gt;...and yes, I'm enjoying a perfect holiday -- I have always made good decisions while swimming.&lt;/p&gt;</description>
	<pubDate>Thu, 03 Jul 2008 22:23:39 +0000</pubDate>
</item>
<item>
	<title>Kenny Gorman: Python script showing PostgreSQL objects in linux memory: pg_osmem.py</title>
	<guid>http://www.kennygorman.com/wordpress/?p=250</guid>
	<link>http://www.kennygorman.com/wordpress/?p=250</link>
	<description>&lt;p&gt;I got some email and comments about the code I used for &lt;a href=&quot;http://www.kennygorman.com/wordpress/?p=246&quot;&gt;my post&lt;/a&gt;; &lt;i&gt;Mapping Linux memory for PostgreSQL using fincore&lt;/i&gt; so I thought I would post the code I am using.  Nothing too fancy here, it needs a config file and some more bits.  I highly recommend someone do this in perl vs python and incorporate fincore as a module instead.  I used &lt;a href=&quot;http://www.initd.org/svn/psycopg/&quot;&gt;psycopg2&lt;/a&gt;, other than that, all the other modules are stock with python &lt;a href=&quot;http://www.python.org/&quot;&gt;2.5.2&lt;/a&gt;. If someone wants to show me how to query the data directory PostgreSQL is currently using and incorporate that into the script vs the static string: mydir   = &amp;#8220;/data/mydb/base&amp;#8221;, that would be great.  In order to use this script, you must change the variables for fincore, and mydir below.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;python&quot;&gt;&amp;nbsp;
&lt;span&gt;#!/home/postgres/python/bin/python&lt;/span&gt;
&lt;span&gt;#&lt;/span&gt;
&lt;span&gt;# script to find show memory usage of PG buffers in OS cache&lt;/span&gt;
&lt;span&gt;# 2008 kcg&lt;/span&gt;
&lt;span&gt;#&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;os&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; psycopg2
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;commands&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;re&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;sys&lt;/span&gt;
&lt;span&gt;from&lt;/span&gt; &lt;span&gt;optparse&lt;/span&gt; &lt;span&gt;import&lt;/span&gt; OptionParser
&amp;nbsp;
&lt;span&gt;parser&lt;/span&gt; = OptionParser&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-u&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--username&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;username&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;username for PostgreSQL&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-m&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--machine&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;machine&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;machine to connect to.. aka: hostname&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-d&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--dbname&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;dbname&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;database name to connect to&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-p&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--password&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;password&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;password for PostgreSQL&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#40;&lt;/span&gt;options, args&lt;span&gt;&amp;#41;&lt;/span&gt; = &lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;parse_args&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
osmem   =&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;# change these to match actual locations&lt;/span&gt;
fincore =&lt;span&gt;&amp;quot;/home/kgorman/fincore.pl&amp;quot;&lt;/span&gt;
mydir   = &lt;span&gt;&amp;quot;/data/mydb/base&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;# get list of dbs on host, and return dictionary of db=oid sets&lt;/span&gt;
&lt;span&gt;def&lt;/span&gt; lookup_dbs&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
 dbs=&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;
 connectstr=&lt;span&gt;&amp;quot;host=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;machine&lt;/span&gt;+&lt;span&gt;&amp;quot; dbname=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;dbname&lt;/span&gt;+&lt;span&gt;&amp;quot; user=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;username&lt;/span&gt;+&lt;span&gt;&amp;quot; port=5432 password=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;password&lt;/span&gt;
 handle=psycopg2.&lt;span&gt;connect&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;connectstr&lt;span&gt;&amp;#41;&lt;/span&gt;
 curs=handle.&lt;span&gt;cursor&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
 sql=&lt;span&gt;&amp;quot;select datname,oid from pg_database where datname = '&amp;quot;&lt;/span&gt;+options.&lt;span&gt;dbname&lt;/span&gt;+&lt;span&gt;&amp;quot;' and datname not like '%template%'&amp;quot;&lt;/span&gt;
 curs.&lt;span&gt;execute&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sql&lt;span&gt;&amp;#41;&lt;/span&gt;
 &lt;span&gt;for&lt;/span&gt; d &lt;span&gt;in&lt;/span&gt; curs.&lt;span&gt;fetchall&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
   dbs&lt;span&gt;&amp;#91;&lt;/span&gt;d&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;=d&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;
 &lt;span&gt;return&lt;/span&gt; dbs
&amp;nbsp;
&lt;span&gt;# get object&lt;/span&gt;
&lt;span&gt;def&lt;/span&gt; lookup_oid&lt;span&gt;&amp;#40;&lt;/span&gt;oid,dbname&lt;span&gt;&amp;#41;&lt;/span&gt;:
 connectstr=&lt;span&gt;&amp;quot;host=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;machine&lt;/span&gt;+&lt;span&gt;&amp;quot; dbname=&amp;quot;&lt;/span&gt;+dbname+&lt;span&gt;&amp;quot; user=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;username&lt;/span&gt;+&lt;span&gt;&amp;quot; port=5432 password=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;password&lt;/span&gt;
 handle=psycopg2.&lt;span&gt;connect&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;connectstr&lt;span&gt;&amp;#41;&lt;/span&gt;
 curs=handle.&lt;span&gt;cursor&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
 sql=&lt;span&gt;&amp;quot;select relname from pg_class where oid = &amp;quot;&lt;/span&gt;+oid
 curs.&lt;span&gt;execute&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sql&lt;span&gt;&amp;#41;&lt;/span&gt;
 &lt;span&gt;for&lt;/span&gt; d &lt;span&gt;in&lt;/span&gt; curs.&lt;span&gt;fetchall&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
  &lt;span&gt;return&lt;/span&gt; d&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
dbs=lookup_dbs&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;for&lt;/span&gt; v, i &lt;span&gt;in&lt;/span&gt; dbs.&lt;span&gt;iteritems&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
  &lt;span&gt;for&lt;/span&gt; ii &lt;span&gt;in&lt;/span&gt; &lt;span&gt;os&lt;/span&gt;.&lt;span&gt;listdir&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;mydir+&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;+&lt;span&gt;str&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;i&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
     p = &lt;span&gt;re&lt;/span&gt;.&lt;span&gt;compile&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'&lt;span&gt;\d&lt;/span&gt;'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
     &lt;span&gt;if&lt;/span&gt; p.&lt;span&gt;match&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;ii&lt;span&gt;&amp;#41;&lt;/span&gt;:
     	&lt;span&gt;#print ii&lt;/span&gt;
        rel=lookup_oid&lt;span&gt;&amp;#40;&lt;/span&gt;ii,v&lt;span&gt;&amp;#41;&lt;/span&gt;
        fullpath=mydir+&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;+&lt;span&gt;str&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;i&lt;span&gt;&amp;#41;&lt;/span&gt;+&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;+ii
	&lt;span&gt;cmd&lt;/span&gt;=fincore+&lt;span&gt;&amp;quot; &amp;quot;&lt;/span&gt;+fullpath
	&lt;span&gt;#print cmd&lt;/span&gt;
	pages=&lt;span&gt;commands&lt;/span&gt;.&lt;span&gt;getstatusoutput&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;#print pages&lt;/span&gt;
	n=pages&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;.&lt;span&gt;split&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;' '&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
        size=n&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;
	&lt;span&gt;if&lt;/span&gt; p.&lt;span&gt;match&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;size&lt;span&gt;&amp;#41;&lt;/span&gt;:
           &lt;span&gt;if&lt;/span&gt; rel:
	     osmem&lt;span&gt;&amp;#91;&lt;/span&gt;v+&lt;span&gt;&amp;quot;:&amp;quot;&lt;/span&gt;+rel&lt;span&gt;&amp;#93;&lt;/span&gt;=&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;size&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;1024&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;# sort and output&lt;/span&gt;
sdata=&lt;span&gt;sorted&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;osmem.&lt;span&gt;iteritems&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;, key=&lt;span&gt;lambda&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;k,v&lt;span&gt;&amp;#41;&lt;/span&gt;: &lt;span&gt;&amp;#40;&lt;/span&gt;v,k&lt;span&gt;&amp;#41;&lt;/span&gt;, reverse=&lt;span&gt;True&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
a=&lt;span&gt;0&lt;/span&gt;
&lt;span&gt;print&lt;/span&gt; &lt;span&gt;&amp;quot;OS Cache Usage:&amp;quot;&lt;/span&gt;
&lt;span&gt;while&lt;/span&gt; a &lt;span&gt;&amp;lt;&lt;/span&gt; &lt;span&gt;len&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sdata&lt;span&gt;&amp;#41;&lt;/span&gt;:
  &lt;span&gt;print&lt;/span&gt; sdata&lt;span&gt;&amp;#91;&lt;/span&gt;a&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;+&lt;span&gt;&amp;quot;:&amp;quot;&lt;/span&gt;+&lt;span&gt;str&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sdata&lt;span&gt;&amp;#91;&lt;/span&gt;a&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
  a=a&lt;span&gt;+1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 03 Jul 2008 01:21:44 +0000</pubDate>
</item>
<item>
	<title>Jignesh K. Shah: wal_buffers and PostgreSQL 8.3.3</title>
	<guid>http://people.planetpostgresql.org/jkshah/index.php?/archives/5-guid.html</guid>
	<link>http://people.planetpostgresql.org/jkshah/index.php?/archives/5-wal_buffers-and-PostgreSQL-8.3.3.html</link>
	<description>&lt;p&gt;Recently Felix Malinkevich joined the ISV-E Open Source Team at Sun as an Intern working on PostgreSQL &lt;a href=&quot;http://blogs.sun.com/jkshah/entry/wal_buffers_in_postgresql_8&quot;&gt;[Read More]&lt;/a&gt; &lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 21:11:20 +0000</pubDate>
</item>
<item>
	<title>Robert Hodges: What's Your Favorite Database Replication Feature?</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-3182132208670501583</guid>
	<link>http://scale-out-blog.blogspot.com/2008/07/whats-your-favorite-database.html</link>
	<description>Replication is one of the most flexible technologies available for databases.  We are implementing a new open-source, database-neutral replication product that works with MySQL, Oracle, and PostgreSQL.  Naturally we've done a lot of thinking about the feature set.  It's tough to pick any single feature as the most important, but one that really stands out is optional statement replication.   Here's why.&lt;br /&gt;&lt;br /&gt;Database replication products tend to replicate row changes and DDL.  However, &lt;a href=&quot;http://mysqlha.blogspot.com/&quot;&gt;Mark Callaghan&lt;/a&gt; has &lt;a href=&quot;http://mysqlha.blogspot.com/2008/06/table-checksums-row-based-replication.html&quot;&gt;a great example&lt;/a&gt; of why you want to replicate statements as well--it enables &lt;a href=&quot;http://www.maatkit.org/&quot;&gt;Maatkit&lt;/a&gt; distributed consistency checking to work.   If you dissect the &lt;a href=&quot;http://maatkit.sourceforge.net/doc/mk-table-checksum.html&quot;&gt;mk-table-checksum --replicate&lt;/a&gt; command you will see that it uses a nice trick.  The SQL queries generate checksums into the master table and then replicate as&lt;span&gt; statements&lt;/span&gt; rather than row updates out to slaves.  That way the slaves recompute the checksum locally at the same point in the overall transaction history.   Very elegant!&lt;br /&gt;&lt;br /&gt;Replicated consistency checks are a wonderful feature for large systems that can't afford to stop in order to compare tables between servers.  However, you cannot use it if your database cannot replicate statements.  As Mark points out, not even all MySQL engines do this.  The &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php&quot;&gt;proposed replication additions for PostgreSQL&lt;/a&gt; won't support it either.&lt;br /&gt;&lt;br /&gt;Optional statement replication is really the best kind of feature: it is useful on its own, but also enables features like consistency checking and other nice administrative tricks.   We're going to put a &quot;worm-hole&quot; in our replication engine that allows applications to invoke statement replication at the SQL level.  Can you guess how we are going to do it?  If not, you'll have to wait until we release. :)&lt;br /&gt;&lt;br /&gt;So what's &lt;span&gt;your&lt;/span&gt; favorite database replication feature?</description>
	<pubDate>Wed, 02 Jul 2008 16:40:34 +0000</pubDate>
</item>
<item>
	<title>Hubert Lubaczewski: Who/what is trashing db performance?</title>
	<guid>http://www.depesz.com/?p=1218</guid>
	<link>http://www.depesz.com/index.php/2008/07/02/whowhat-is-trashing-db-performance/</link>
	<description>Every so often I need to find who exactly is damaging database performance. I mean - I have db connection which does something strange/wrong with the database, but what exactly is responsible?
Switching to separate user for every program, script and developer would solve the problem, but it is not always an option. So, what should [...]</description>
	<pubDate>Wed, 02 Jul 2008 13:40:04 +0000</pubDate>
</item>
<item>
	<title>Robert Hodges: MySQL, Sun, and the Future of Open Source Databases</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-5215743957708120182</guid>
	<link>http://scale-out-blog.blogspot.com/2008/05/mysql-sun-and-future-of-open-source.html</link>
	<description>So what's it like now that Sun now owns MySQL?  The executive summary:  a little weird.  I was at the MySQL User Conference a couple of weeks ago and had a chance to talk with a lot of people in the community as well as many MySQL folks.  Marten Mickos is now the head of database products at Sun.  It's not very hard to figure out what Sun will do with MySQL products for the near future--pretty much what MySQL was doing already.&lt;br /&gt;&lt;br /&gt;The real question for a lot of people is what will happen with databases like PostgreSQL and Derby.    Sun has invested heavily in both of them, and PostgreSQL in particular is now quite fast.  With the MySQL acquisition, Sun has an opportunity to run the table with multiple offerings that cover both enterprise applications as well as web and embedded.   However, that would mean cutting down the MySQL roadmap to concentrate, for example, on scale-out rather than scale-up.  It would also require thinking big to combine with other vendors in order to disrupt the market leader Oracle.  Done right, there's a chance to upend the industry in a way that has not occurred since Microsoft muscled into databases in the early 1990s using code bought from Sybase.&lt;br /&gt;&lt;br /&gt;Based on talks from people like Rich Green and Marten Mickos, it's hard to see this happening.  Sun is taking a hands-off approach to MySQL *and* giving MySQL management control of overall database strategy.  A disruptive change therefore seems unlikely.  In fact, the more likely result is stagnation, now that MySQL no longer has to fight for its existence.   The MySQL roadmap is still pretty diffuse and there has been little product movement since the 2007 User Conference.   MySQL 5.1 is still not out the door.  Falcon is likely to show up ready for production use around the time the Boeing Dreamliner rolls out.  MySQL  is still working on multiple storage engines (2 new ones plus NDB and MyISAM, to name a couple.)  There's not even a glimmer of a date for cool new replication features like a pluggable replication interface.  In short, not much evidence for radical changes of any kind.&lt;br /&gt;&lt;br /&gt;Also, there must be the awful temptation to focus on vertical scaling so that MySQL can work on Sun hardware with large numbers of cores.  I asked Marten Mickos specifically about the choice between scaling up and scaling out but didn't get a very clear answer.   Personally I think for MySQL to concentrate very hard on vertical scaling would be a strategic error.  The  community that made MySQL great is into commodity hardware and scale-out in a big way.  First rate support for highly scaled SMP architectures is going to be a long slog that will compromise delivery of many other features.&lt;br /&gt;&lt;br /&gt;Given all of this it's hard not to see innovation, particularly in problems like scale-out, shifting away from MySQL to other databases as well as middleware.   This would be a great time for the PostgreSQL  community to get really serious about data replication.  MySQL won't fade--it's already a great database.  But there's likely to be a crowd of people in the MySQL community eying other solutions.  It's going to be interesting to see what they come up with.</description>
	<pubDate>Wed, 02 Jul 2008 11:38:43 +0000</pubDate>
</item>
<item>
	<title>Robert Hodges: Tungsten Scale-Out Stack Presentation from MySQL Conference</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-3263236123883776547</guid>
	<link>http://scale-out-blog.blogspot.com/2008/05/tungsten-scale-out-stack-presentation.html</link>
	<description>There have been a number of requests for copies of the slides to the Tungsten Scale-Out Stack talk I gave at the &lt;a href=&quot;http://en.oreilly.com/mysql2008/public/content/home&quot;&gt;MySQL Conference&lt;/a&gt; in April.   &lt;a href=&quot;http://assets.en.oreilly.com/1/event/2/Continuent%20Tungsten_%20Proxies%20on%20Steroids%20for%20HA%20and%20Performance%21%20Presentation.pdf&quot;&gt;Here they are&lt;/a&gt; courtesy of the nice folks at O'Reilly who organized the conference.&lt;br /&gt;&lt;br /&gt;Tungsten is our codename for a set of technologies to raise database performance and availability using scale-out.   In the database world scale-out is a term of art that means spreading data across servers on multiple systems. With data in multiple places you are less subject to failures--when one copy crashes you just use the others.  Similarly, if your application runs a lot of queries, you can spread them over different machines, which makes for faster and more stable response times.&lt;br /&gt;&lt;br /&gt;So database scale-out sounds great (and is too), but getting it to work properly is harder than you would think.  Along with practical issues like management, there are theoretical barriers.  Let's say you are creating a product catalog service using database replicas on different hosts.  Applications connect to any replica to get information.  Your manager, a guy with pointed hair, tells you to make sure of the following:&lt;br /&gt;&lt;br /&gt;1. The catalog service is always available.&lt;br /&gt;2. The service keeps working even if you get a network partition between hosts.&lt;br /&gt;3. The copies are always consistent (e.g., you can go to any copy and get the same data).&lt;br /&gt;&lt;br /&gt;Here's an ugly surprise.  It turns out your data service can only have two of the three properties at any given time, a result that was &lt;a href=&quot;http://citeseer.ist.psu.edu/544596.html&quot;&gt;proven&lt;/a&gt; only recently and is now called the CAP Principle.   If you want to be available and handle network partitions, you must accept that data will sometimes be inconsistent.  Your manager is going to be very disappointed.&lt;br /&gt;&lt;br /&gt;That's where we get back to Tungsten and the Scale-Out Stack.  We realized a while back that you can't think in terms of a single product or even family of products to solve scale-out in a general way.    It's better to design a flexible set of technologies with different strengths and weaknesses that users choose based on what's important to them.  If you need to cluster over a WAN, use master/slave replication.  If you don't want master failures, use synchronous replication in middleware.&lt;br /&gt;&lt;br /&gt;Read the slides to learn more about the thinking.   Database scale-out is a fascinating problem and we are looking forward to making it much easier to handle.  Please stay tuned!  I'll be writing more about this in the weeks and months to come.</description>
	<pubDate>Wed, 02 Jul 2008 11:37:12 +0000</pubDate>
</item>
<item>
	<title>Robert Hodges: Webinar: The Coolest Scale-Out Projects on the Planet</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-2780083678048969768</guid>
	<link>http://scale-out-blog.blogspot.com/2008/06/webinar-coolest-scale-out-projects-on.html</link>
	<description>My company Continuent sponsors &lt;a href=&quot;http://www.continuent.org/&quot;&gt;Continuent.org&lt;/a&gt;, an open source site that contains some of the coolest scale-out projects around.  You may have heard of &lt;a href=&quot;http://sequoia.continuent.org/&quot;&gt;Sequoia&lt;/a&gt;, which implements middleware clustering of any database that has a JDBC driver.   However, Sequoia is really just the beginning.&lt;br /&gt;&lt;br /&gt;We have several other projects that offer interesting scale-out technologies.   &lt;a href=&quot;http://myosotis.continuent.org/&quot;&gt;Myosotis&lt;/a&gt; implements fast SQL proxying, &lt;a href=&quot;http://hedera.continuent.org/&quot;&gt;Hedera&lt;/a&gt; provides wrappers for group communications, and &lt;a href=&quot;http://bristlecone.continuent.org/&quot;&gt;Bristlecone&lt;/a&gt; has tools for performance testing of scale-out architectures.  This summer we will add projects for database neutral master/slave replication as well as cluster management.   In short, there's a lot to look at.&lt;br /&gt;&lt;br /&gt;If you would like a closer look at Continuent.org, I'm doing a Webex webinar to talk about the overall technology stack and project roadmaps.   It's scheduled for Thursday June 26th at 10am EDT.   You can sign up &lt;a href=&quot;https://continuent.webex.com/mw0304l/mywebex/default.do?siteurl=continuent&quot;&gt;here&lt;/a&gt; to see what's going on.&lt;br /&gt;&lt;br /&gt;Don't worry if you miss the presentation--I'll post slides here and will be doing a series of blog entries on each of the projects in the coming weeks.</description>
	<pubDate>Wed, 02 Jul 2008 11:36:22 +0000</pubDate>
</item>
<item>
	<title>Leo Hsu and Regina Obe: How to Inherit,  Unherit and Merge Inherit</title>
	<guid>http://www.postgresonline.com/journal/index.php?/archives/59-guid.html</guid>
	<link>http://www.postgresonline.com/journal/index.php?/archives/59-How-to-Inherit,-Unherit-and-Merge-Inherit.html</link>
	<description>&lt;p&gt;A lot of this information is nicely tucked away in the PostgreSQL docs in &lt;a href=&quot;http://www.postgresql.org/docs/8.3/interactive/ddl-inherit.html&quot; target=&quot;_blank&quot;&gt;http://www.postgresql.org/docs/8.3/interactive/ddl-inherit.html&lt;/a&gt;, 
but since the docs are so huge and rich, one may tend to miss
these things.&lt;/p&gt;

&lt;p&gt;While there are numerous interesting use cases for the PostgreSQL inheritance structure,  one of the key reasons people use it is for table partitioning strategies.
&lt;/p&gt;

&lt;h4&gt;How do you make a stand-alone table a child of another table?&lt;/h4&gt;
&lt;p&gt;The first question that comes to mind is why would you ever need a table to adopt another table. There are 2 reasons that come to mind.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;When you are loading huge amounts of data especially of a read only nature - its often convenient to not have that table be visible to your applications until 
		you are done with the loading process.  So you may want to make it a child after the loading.&lt;/li&gt;
	&lt;li&gt;Your tables seemed fairly unrelated when you started out and then one day you realized you really were talking about apples and apples and need to report on them together at a higher level.
		One situation like this to give a somewhat real-world perspective - lets say you developed a timesheet app for an organization and each department insisted on having their own version of the app and each along with 
		the basic fields needed to track some additional ones of their own.  Then higher forces
		came in and said &lt;em&gt;I need to know what everyone is doing, but I don't need to see all that other crap they keep track of.&lt;/em&gt;.  Two options come to mind - create a bunch of views
			that union stuff together or institute a &lt;em&gt;round-up-the-children-and-adopt-them&lt;/em&gt; program.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This fits into one of the categories of things that PostgreSQL lets you do that PgAdmin III doesn't have a graphical way to let you do it.
If you try to inherit in PgAdmin III from a table that already exists, that option is just greyed out. So you have to resort to DDL SQL statements.  Luckily its fairly trivial. Well this really only works
for PostgreSQL 8.2+.  I don't think PostgreSQL 8.1 and below supported INHERIT/NO INHERIT in the ALTER TABLE statement.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/59-How-to-Inherit,-Unherit-and-Merge-Inherit.html#extended&quot;&gt;Continue reading &quot;How to Inherit,  Unherit and Merge Inherit&quot;&lt;/a&gt;</description>
	<pubDate>Wed, 02 Jul 2008 07:37:00 +0000</pubDate>
</item>
<item>
	<title>David Wheeler: CITEXT Patch Submitted to PostgreSQL Contrib</title>
	<guid>tag:justatheory.com,2008:/computers/databases/postgresql/citext-patch-submitted</guid>
	<link>http://justatheory.com/computers/databases/postgresql/citext-patch-submitted.html</link>
	<description>&lt;div&gt;&lt;p&gt;On Friday, I &lt;a href=&quot;http://archives.postgresql.org/message-id/4013F1AE-FE1B-427B-8C23-1A5681DA297E@kineticode.com&quot; title=&quot;PATCH: CITEXT 2.0&quot;&gt;submitted a patch&lt;/a&gt; to add a locale-aware case-insensitive text type as a PostgreSQL contrib module. This has been among my top requests as a feature for PostgreSQL ever since I started using it. And as I started work on yet another application recently, I decided to look into what it would take to just make it happen myself. I'm hopeful that everyone will be able to benefit from this bit of &lt;a href=&quot;http://en.wiktionary.org/wiki/yak_shaving&quot; title=&quot;Wiktionary: “yak shaving”&quot;&gt;yak shaving&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://justatheory.com/computers/databases/postgresql/citext-patch-submitted.html&quot;&gt;Read More »&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 30 Jun 2008 19:49:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Attending OSCON</title>
	<guid>http://momjian.us/main/blogs/pgblog.html#June_30_2008_2</guid>
	<link>http://momjian.us/main/blogs/pgblog.html#June_30_2008_2</link>
	<description>&lt;p&gt;My son Matthew, 15, is attending &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/content/home&quot;&gt;OSCON&lt;/a&gt; this year, but not to
be with me, but rather to attend the conference tutorials and sessions --- imagine that.
&lt;/p&gt;</description>
	<pubDate>Mon, 30 Jun 2008 16:00:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: pgpool PG Pool Party</title>
	<guid>http://momjian.us/main/blogs/pgblog.html#June_30_2008</guid>
	<link>http://momjian.us/main/blogs/pgblog.html#June_30_2008</link>
	<description>&lt;p&gt;I am having a pool party and barbecue at my house on Saturday, August 9, for Postgres community members in the
Philadelphia area and nearby states. Families are welcome. Food and drink will be provided, and, of course, swimming is
encouraged.  Please come anytime between 2pm and 7pm (&lt;a href=&quot;http://momjian.us/main/directions.html&quot;&gt;directions&lt;/a&gt;). 
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://momjian.us/main/blogs/pgblog.html#June_30_2008&quot;&gt;Read More &amp;raquo;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 30 Jun 2008 16:00:00 +0000</pubDate>
</item>
<item>
	<title>David Fetter: PostgreSQL Weekly News - June 29 2008</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/179-guid.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/179-PostgreSQL-Weekly-News-June-29-2008.html</link>
	<description>&lt;strong&gt;PostgreSQL Weekly News - June 29 2008&lt;/strong&gt;
&lt;br /&gt;

July's commit-fest is starting soon.
&lt;br /&gt;

 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/179-PostgreSQL-Weekly-News-June-29-2008.html#extended&quot;&gt;Continue reading &quot;PostgreSQL Weekly News - June 29 2008&quot;&lt;/a&gt;</description>
	<pubDate>Mon, 30 Jun 2008 05:21:22 +0000</pubDate>
</item>
<item>
	<title>Robert Treat: reconnoiter goes... alpha</title>
	<guid>http://people.planetpostgresql.org/xzilla/index.php?/archives/350-guid.html</guid>
	<link>http://people.planetpostgresql.org/xzilla/index.php?/archives/350-reconnoiter-goes...-alpha.html</link>
	<description>I'm not sure if this is official, but I noticed that &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2983&amp;amp;entry_id=350&quot; title=&quot;https://labs.omniti.com/trac/reconnoiter&quot;&gt;reconnoiter&lt;/a&gt; got it's own fully fledge project page on the &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2979&amp;amp;entry_id=350&quot; title=&quot;https://labs.omniti.com/&quot;&gt;labs site&lt;/a&gt;. What is reconnoiter?  It's a statistical graphing package that can be used for monitoring and trending various pieces of information about your server architecture. Think &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2980&amp;amp;entry_id=350&quot; title=&quot;http://www.cacti.net/&quot;&gt;cacti&lt;/a&gt;, except that it has a more component driven architecture, and that it uses an &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2981&amp;amp;entry_id=350&quot; title=&quot;http://www.postgresql.org/&quot;&gt;RDBMS as the data store, rather than &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url=aHR0cDovL29zcy5vZXRpa2VyLmNoL3JyZHRvb2wv&amp;amp;entry_id=350&quot; title=&quot;http://oss.oetiker.ch/rrdtool/&quot;&gt;rrd&lt;/a&gt;. This means you can not only do standard graphical layouts, but use full fledged SQL to query your collected data set in new and different ways (which can be real handy when you're trying to &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2982&amp;amp;entry_id=350&quot; title=&quot;http://www.lethargy.org/~jesus/archives/118-Dissecting-todays-Internet-traffic-spikes.html&quot;&gt;investigate anomalies&lt;/a&gt; common in todays web ecosystem.  It's still pretty new, but worth a look if you need these types of services (and likely you do, even if you don't know it). &lt;br /&gt;
&lt;br /&gt;
UPDATE: Theo has done a more comprehensive &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2984&amp;amp;entry_id=350&quot; title=&quot;http://lethargy.org/~jesus/archives/121-Reconnoiter-and-another-platform.html&quot;&gt;explanation of reconnoiter&lt;/a&gt; that is worth a look. It even includes some pretty pictures. &lt;img src=&quot;http://people.planetpostgresql.org/xzilla/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/a&gt;</description>
	<pubDate>Sun, 29 Jun 2008 02:21:00 +0000</pubDate>
</item>
<item>
	<title>Devrim Gündüz: Time for a vacation</title>
	<guid>http://people.planetpostgresql.org/devrim/index.php?/archives/116-guid.html</guid>
	<link>http://people.planetpostgresql.org/devrim/index.php?/archives/116-Time-for-a-vacation.html</link>
	<description>&lt;br /&gt;
It has been almost 2 years since I spent time for a vacation -- After I got &lt;a target=&quot;_blank&quot; href=&quot;http://archives.postgresql.org/pgsql-hackers/2006-09/msg01267.php&quot;&gt;married&lt;/a&gt; about 2 years ago,we had a 1-week honeymoon -- Then, last year, my son was &lt;a target=&quot;_blank&quot; href=&quot;http://people.planetpostgresql.org/devrim/index.php?/archives/99-Welcome-baby....html&quot;&gt;born&lt;/a&gt;, and we found no time for a holiday.&lt;p&gt;Everyone near me, except me ( &lt;img src=&quot;http://people.planetpostgresql.org/devrim/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt;  ) said that I'm tired -- so I was forced for a 2-week holiday. It is hard to be away from my laptop, but still &lt;img src=&quot;http://people.planetpostgresql.org/devrim/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; See you two weeks later.&lt;/p&gt;</description>
	<pubDate>Sat, 28 Jun 2008 19:52:40 +0000</pubDate>
</item>
<item>
	<title>Gevik Babakhani: Compiling Qt with native PostgreSQL drivers on Windows XP</title>
	<guid>http://www.truesoftware.net/gevik/?p=13</guid>
	<link>http://www.truesoftware.net/gevik/2008/06/compiling-qt-with-native-postgresql-on-windows-xp/</link>
	<description>&lt;p&gt;
I spent the last three hours looking and  Googling to solve a very annoying problem in order to compile PostgreSQL drivers natively with Qt 4.4.0 framework. After a lot of frustration I discovered that one has to provide the path to &lt;strong&gt;libpq.lib&lt;/strong&gt; and the PostgreSQL include dir in UNIX style or 8.3 short filenames to get the qmake.exe to read them correctly.
&lt;/p&gt;
&lt;p&gt;
After running configure.exe, I had to modify &lt;strong&gt;.qmake.cache&lt;/strong&gt; like to following to make it work:
&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;
QMAKE_QT_VERSION_OVERRIDE = 4
LIBS           += C:\PROGRA~1\POSTGR~1\8.3\lib\libpq.lib
LIBPATH        += C:\PROGRA~1\POSTGR~1\8.3\lib
INCLUDEPATH    += C:\PROGRA~1\POSTGR~1\8.3\include
OBJECTS_DIR     = tmp\obj\debug_shared
MOC_DIR         = tmp\moc\debug_shared
RCC_DIR         = tmp\rcc\debug_shared
sql-drivers    += odbc psql
sql-plugins    += sqlite
....
....
....
QMAKE_LIBDIR_QT = $$QT_BUILD_TREE\lib
&lt;/pre&gt;</description>
	<pubDate>Wed, 25 Jun 2008 23:05:46 +0000</pubDate>
</item>
<item>
	<title>Robert Treat: Could OSDB replace the SQL Standard Committe?</title>
	<guid>http://people.planetpostgresql.org/xzilla/index.php?/archives/349-guid.html</guid>
	<link>http://people.planetpostgresql.org/xzilla/index.php?/archives/349-Could-OSDB-replace-the-SQL-Standard-Committe.html</link>
	<description>Lukas' recent post on &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2970&amp;amp;entry_id=349&quot; title=&quot;http://pooteeweet.org/blog/1201&quot;&gt;solving the prepared statement problem&lt;/a&gt; got wondering, if open source databases implement something, how likely is it to become a defacto standard? The best example of this is the LIMIT clause, which both &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2971&amp;amp;entry_id=349&quot; title=&quot;http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html&quot;&gt;MySQL&lt;/a&gt; and &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2972&amp;amp;entry_id=349&quot; title=&quot;http://www.postgresql.org/docs/current/interactive/queries-limit.html&quot;&gt;PostgreSQL&lt;/a&gt; support, and that anyone who has used either database will tell you is a far superior tool to what it is available in other systems (don't get me wrong, &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2973&amp;amp;entry_id=349&quot; title=&quot;http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html&quot;&gt;rownum()&lt;/a&gt; has it's place, but for what LIMIT does it's not as good).  And while LIMIT is not standard SQL, can you imagine if the SQL Standard Committee were to adopt a syntax that conflicted with the Postgres/MySQL implementations? &lt;br /&gt;
&lt;br /&gt;
Take this with a grain of salt, but really there are only 5 databases that matter anymore, Oracle, DB2, MS SQL, MySQL, and Postgres. Sure, there are many other successful database systems, and also some niche databases that are big players in their segment, but those 5 are the ones that set the tone. Even with Oracle far  out pacing MySQL on dollars, the number of people who have joined the tech industry within the last 5 years who have hands on experience with MySQL high enough that it is not uncommon for people to look for their syntax in other database products (for better or worse). And remember, Postgres is &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2974&amp;amp;entry_id=349&quot; title=&quot;http://freshmeat.net/stats/#popularity&quot;&gt;even more popular&lt;/a&gt; than MySQL in some places; one should expect the impact of open source databases to rise in this area faster than just by watching market share.&lt;br /&gt;
&lt;br /&gt;
So, what kind of problems could be solved with new syntax? Honestly I am not really sure. One piece of syntax I always though SQL got wrong was the UPDATE statement. I've always thought that the syntax should have been UPDATE table WHERE conditions SET column=data, if only because it would have saved us from countless unconstrained updates from junior DBA's.  Other examples might be to take something like MySQL's &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2977&amp;amp;entry_id=349&quot; title=&quot;http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html&quot;&gt;ON DUPLICATE KEY&lt;/a&gt; syntax, clear up any sanity issues with implementation, and then implement it in Postgres. (Yes, this examples are questionable, since there are SQL Standard ways of doing this stuff, but the syntax of this command sure seems more user friendly). &lt;br /&gt;
&lt;br /&gt;
Of course, this whole idea overlooks the notion that the SQL Standard committee has often been used as a tool between database vendors to make life tougher for their competitors, so it might be unlikely that the committee would ever adopt the syntax from the &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2976&amp;amp;entry_id=349&quot; title=&quot;http://planetosdb.org/&quot;&gt;FLOSS community&lt;/a&gt; if it meant giving them some type of advantage, but this is also why FLOSS databases could give hope, since as more user oriented projects, if they worked together you should really see syntax that makes everyones lives easier. Imagine Postgres, MySQL, Firebird, SQLite, and Ingres all working together to create their own, user driven syntaxes.</description>
	<pubDate>Wed, 25 Jun 2008 22:47:00 +0000</pubDate>
</item>
<item>
	<title>Bruce Momjian: Upcoming Presentations</title>
	<guid>http://momjian.us/main/blogs/pgblog.html#June_24_2008</guid>
	<link>http://momjian.us/main/blogs/pgblog.html#June_24_2008</link>
	<description>&lt;p&gt;I am speaking at two new venues;  one is tonight in New York City, the other is in Massachusetts in July; see my
&lt;a href=&quot;http://momjian.us/main/events.html&quot;&gt; events&lt;/a&gt; page for more details.
&lt;/p&gt;</description>
	<pubDate>Tue, 24 Jun 2008 16:00:00 +0000</pubDate>
</item>
<item>
	<title>Devrim Gündüz: Added Fedora 9 support to RPM repository</title>
	<guid>http://people.planetpostgresql.org/devrim/index.php?/archives/115-guid.html</guid>
	<link>http://people.planetpostgresql.org/devrim/index.php?/archives/115-Added-Fedora-9-support-to-RPM-repository.html</link>
	<description>&lt;br /&gt;
&lt;p&gt;Sorry for the delay, folks -- I promise that it won't happen again. A few days ago, I added Fedora-9 supporto to &lt;a title=&quot;PostgreSQL RPM Repository.&quot; href=&quot;http://yum.pgsqlrpms.org &quot;&gt;PostgreSQL RPM Repository&lt;/a&gt;. 8.3 support is complete. I added 7.4, 8.0, 8.1 and 8.2 packages, too, but did not add other PostgreSQL related packages to those branches, yet.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 23 Jun 2008 16:14:26 +0000</pubDate>
</item>
<item>
	<title>Leif B. Kristensen: Code prettification</title>
	<guid>http://solumslekt.org/blog/?p=25</guid>
	<link>http://solumslekt.org/blog/?p=25</link>
	<description>&lt;p&gt;Inevitably, as you&amp;#8217;re learning a new skill, such as a programming language, you may want to revisit your old work and see if you can do it better. I had this pair of functions to fetch the previous and the next &amp;#8220;page&amp;#8221; of a source collection, based on the sort order of the source. In plain text, in order to get to the previous &amp;#8220;page&amp;#8221; I want the source with the maximum sort order smaller than the present one, and with the same parent id. Here is my brute-force approach from a couple of years ago:&lt;/p&gt;
&lt;pre&gt;
CREATE OR REPLACE FUNCTION get_prev_page(INTEGER) RETURNS INTEGER AS $$
DECLARE
    self_page INTEGER;
    prev_page INTEGER;
    prev_src INTEGER;
    par_id INTEGER;
BEGIN
    SELECT parent_id FROM sources INTO par_id WHERE source_id = $1;
    SELECT sort_order FROM sources INTO self_page
        WHERE source_id = $1;
    SELECT MAX(sort_order) FROM sources INTO prev_page
        WHERE parent_id = par_id AND sort_order  self_page;
    SELECT source_id FROM sources INTO prev_src
        WHERE parent_id = par_id AND sort_order = prev_page;
    RETURN COALESCE(prev_src,0);
END;
$$ LANGUAGE plpgsql STABLE;
&lt;/pre&gt;
&lt;p&gt;Ugly, ugly, ugly. I remember what was the main stumbling block here: You can&amp;#8217;t use an aggregate function such as MAX() in a WHERE clause. The thing is that you don&amp;#8217;t need all those assignments. A little code folding, replacing variables with sub-selects, takes you a long way:&lt;/p&gt;
&lt;pre&gt;
CREATE OR REPLACE FUNCTION get_prev_page(INTEGER) RETURNS INTEGER AS $$
DECLARE
    pp INTEGER;
BEGIN
    SELECT source_id INTO pp FROM sources
        WHERE parent_id = (SELECT parent_id FROM sources WHERE source_id = $1)
        AND sort_order  (SELECT sort_order FROM sources WHERE source_id = $1)
        ORDER BY sort_order DESC LIMIT 1;
    RETURN COALESCE(pp, 0);
END
$$ LANGUAGE plpgsql STABLE;
&lt;/pre&gt;
&lt;p&gt;The &amp;#8220;ORDER BY sort_order DESC LIMIT 1&amp;#8243; is a great idiom whenever you need to use an extreme value as part of a WHERE clause.&lt;/p&gt;
&lt;p&gt;Even if the two versions of the code above are functionally equivalent, and the PostgreSQL planner probably will rewrite the query to something like version 1, most programmers would prefer version 2. Why? I think there&amp;#8217;s a lot to the concept that &amp;#8220;coding is poetry&amp;#8221;. Version 2 is more esthetically pleasing, because it conveys its inner meaning in a much more succinct way, as in the Merriam-Webster definition of the word &lt;a href=&quot;http://www.merriam-webster.com/dictionary/succinct&quot;&gt;succinct&lt;/a&gt;: &amp;#8220;marked by compact precise expression without wasted words&amp;#8221;. At least to me it does. And that&amp;#8217;s probably some of the essence of poetry.&lt;/p&gt;</description>
	<pubDate>Mon, 23 Jun 2008 11:51:44 +0000</pubDate>
</item>
<item>
	<title>David Fetter: PostgreSQL Weekly News - June 22 2008</title>
	<guid>http://people.planetpostgresql.org/dfetter/index.php?/archives/178-guid.html</guid>
	<link>http://people.planetpostgresql.org/dfetter/index.php?/archives/178-PostgreSQL-Weekly-News-June-22-2008.html</link>
	<description>&lt;strong&gt;PostgreSQL Weekly News - June 22 2008&lt;/strong&gt;
&lt;br /&gt;

New Survey: What TODO would you most like?
&lt;br /&gt;
http://www.postgresql.org/community/
 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/dfetter/index.php?/archives/178-PostgreSQL-Weekly-News-June-22-2008.html#extended&quot;&gt;Continue reading &quot;PostgreSQL Weekly News - June 22 2008&quot;&lt;/a&gt;</description>
	<pubDate>Mon, 23 Jun 2008 02:23:05 +0000</pubDate>
</item>
<item>
	<title>Ow Mun Heng: Automatic Raid Array Rebuilding</title>
	<guid>http://lotso.livejournal.com/106296.html</guid>
	<link>http://lotso.livejournal.com/106296.html</link>
	<description>Hi guys, long time no post. Last post was at March and it's now already June.&lt;br /&gt;&lt;br /&gt;Been busy as usual, however, not been dabbling as much as I &quot;should&quot; as I've been busy with other NON-FOSS related stuffs. (psst: I'm now heavily into photography. Went to shoot some Japan GT queens!! Kawaaiii)&lt;br /&gt;&lt;br /&gt;Anyway, since this is a (nearly) purely an FOSS based blog, I'm gonna talk about my automatic Raid Rebuilding script.&lt;br /&gt;&lt;br /&gt;You see, what happens is this, my postgresql box, (celeron 2x500GB in Raid 1) has a tendency to keep dieing once in a while for X reasons. (I have till now, been unable to locate the reason why it's dieing so often) I've tried to the write-all, read-all using dd but thus far, has not seen errors being thrown out. So, it's been a manual instance of...&lt;br /&gt;&lt;br /&gt;go to work. see the email : Your raid has Died!&lt;br /&gt;log onto the box, do the rebuild.&lt;br /&gt;&lt;br /&gt;After a while, this just becomes tiring and I decided to fsck it and make it automatic.&lt;br /&gt;&lt;br /&gt;Here's the script&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;FAIL_DRV=`mdadm --detail /dev/md0 | grep faulty | awk '{print $6}'`&lt;br /&gt;&lt;br /&gt;if [ -n &quot;$FAIL_DRV&quot; ]&lt;br /&gt;then&lt;br /&gt;&amp;nbsp; echo &quot;Detected degraded array : $FAIL_DRV&quot;&lt;br /&gt;&amp;nbsp; echo &quot;Starting automated array rebuild process&quot;&lt;br /&gt;&amp;nbsp; mdadm /dev/md0 --fail $FAIL_DRV --remove $FAIL_DRV --add $FAIL_DRV&lt;br /&gt;else&lt;br /&gt;&amp;nbsp; echo &quot;Nothing to do&quot;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Simple eh.. &lt;br /&gt;&lt;br /&gt;So, now I don't have to come to work to see it all wonky because it'll automatically rebuild itself.&lt;br /&gt;&lt;br /&gt;Some of you may ask, how come I don't just replace the drive? Because I can't find any replacement drive which is a PATA connection and at 500GB capacity! The largest I can find are 160GB.&lt;br /&gt;&lt;br /&gt;Bummer</description>
	<pubDate>Mon, 23 Jun 2008 01:32:15 +0000</pubDate>
</item>
<item>
	<title>Robert Treat: Dealing with out of disk issues for the abusive dba</title>
	<guid>http://people.planetpostgresql.org/xzilla/index.php?/archives/348-guid.html</guid>
	<link>http://people.planetpostgresql.org/xzilla/index.php?/archives/348-Dealing-with-out-of-disk-issues-for-the-abusive-dba.html</link>
	<description>When you work at a &lt;a href=&quot;http://people.planetpostgresql.org/xzilla/exit.php?url_id=2968&amp;amp;entry_id=348&quot; title=&quot;http://www.omniti.com/&quot;&gt;technology consulting firm&lt;/a&gt;, you're going to eventually be involved in fixing someone's broken database. Disaster recovery is one of those things that get's easier with experience, but of course if you're doing things correctly, those chances don't come up that often. (&quot;Luckily&quot; that state of commodity hardware still give's us some opportunities...) &lt;br /&gt;
&lt;br /&gt;
One way to gain experience in this area is to abuse the hell out of your development systems. That's not to mean that you should try and break things on purpose, but occasionally mucking around with the underside of things can sometimes be an interesting experience. Of course, sometimes abusing your database can cause you trouble...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://people.planetpostgresql.org/xzilla/index.php?/archives/348-Dealing-with-out-of-disk-issues-for-the-abusive-dba.html#extended&quot;&gt;Continue reading &quot;Dealing with out of disk issues for the abusive dba&quot;&lt;/a&gt;</description>
	<pubDate>Sun, 22 Jun 2008 11:03:00 +0000</pubDate>
</item>

</channel>
</rss>
