<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6695249769823901911</id><updated>2012-04-16T05:09:08.046+02:00</updated><category term='Troubleshooting'/><category term='FOSDEM'/><category term='devscripts'/><category term='svnpath'/><category term='Froscon'/><category term='Compiling'/><category term='CeBIT'/><category term='MacOS X'/><category term='OSX'/><category term='Talks'/><category term='Open Source'/><category term='Administration'/><category term='Development'/><category term='Slony-I'/><category term='GIT'/><category term='PostgreSQL'/><category term='PGConf.de'/><category term='DocBook'/><category term='EU'/><category term='German'/><category term='pSeries'/><category term='Book'/><category term='SVN'/><category term='HTW Aalen'/><category term='Open Source Databases'/><category term='subversion'/><category term='MacPorts'/><title type='text'>Bernd's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/-/PostgreSQL'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/search/label/PostgreSQL'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-7163168519652854291</id><published>2011-10-07T09:23:00.013+02:00</published><updated>2011-10-07T10:32:43.720+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PGConf.de'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>Schedule for PGConf.DE released</title><content type='html'>The &lt;a href="http://pgconf.openrheinruhr.de/day_2011-11-11.de.html"&gt;session schedule&lt;/a&gt; for &lt;a href="http://2011.pgconf.de/"&gt;PGConf.DE&lt;/a&gt;, the German-speaking PostgreSQL Conference, was published. The conference will be hold November 11th in Oberhausen, Germany, in front of the &lt;a href="http://openrheinruhr.de/"&gt;OpenRheinRhur&lt;/a&gt;, a conference focused on free software.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you haven't heard about PGConf.DE, it is the German-speaking continuation of the very successful &lt;a href="http://2010.pgday.eu/"&gt;PostgreSQL Conference Europe&lt;/a&gt; held in Stuttgart last year. There are many great talks about various topics (replication, performance and optimization, development and much more). The conference let you get in touch with developers and users, exchanging experiences about PostgreSQL and creating contacts to various members of the community.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2011.pgconf.de/de/anmeldung.html"&gt;Registration&lt;/a&gt; is open already and the entrance fee also includes access to the OpenRheinRhur conference for the whole weekend. See you there!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-7163168519652854291?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/7163168519652854291/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=7163168519652854291' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7163168519652854291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7163168519652854291'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2011/10/schedule-for-pgconfde-released.html' title='Schedule for PGConf.DE released'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-2159497506227115458</id><published>2011-04-21T12:04:00.007+02:00</published><updated>2011-04-21T13:41:37.907+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='German'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Yes, there is one (at least)...</title><content type='html'>Yesterday it occured to me again, that i was asked for german literature about PostgreSQL 9.0 and the lack thereof. Okay, there is one...look for ISBN-13 978-3897216617 ;)&lt;br /&gt;&lt;br /&gt;PostgreSQL Administration 2nd Edition is available since the very early days of 2011 and covers various topics about PostgreSQL 9.0 Administration, in addition to the first edition which covers up to 8.3 only. Seems people got confused about this.&lt;br /&gt;&lt;br /&gt;A quick check also gives some other german book about this topic, look for ISBN-13 978-3942151061. If you have additional tips, feel free to leave a comment here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-2159497506227115458?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/2159497506227115458/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=2159497506227115458' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/2159497506227115458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/2159497506227115458'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2011/04/yes-there-is-one-at-least.html' title='Yes, there is one (at least)...'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-8753399541925552580</id><published>2011-02-03T23:33:00.004+01:00</published><updated>2011-02-03T23:42:56.507+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FOSDEM'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>FOSDEM, the same procedure as every year</title><content type='html'>&lt;a href="http://www.fosdem.org"&gt;&lt;img src="http://www.fosdem.org/promo/going-to" alt="I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So FOSDEM starts this weekend again...and again i will attend, especially on sunday. Meet the PostgreSQL guys, hear the talks in the PostgreSQL &lt;a href="http://www.fosdem.org/2011/schedule/track/postgresql_devroom"&gt;devroom&lt;/a&gt; and maybe get some other interesting news from the community. &lt;br /&gt;See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-8753399541925552580?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/8753399541925552580/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=8753399541925552580' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/8753399541925552580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/8753399541925552580'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2011/02/fosdem-same-procedure-as-every-year.html' title='FOSDEM, the same procedure as every year'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-2067070845976636934</id><published>2011-01-21T18:26:00.011+01:00</published><updated>2011-01-21T18:54:37.486+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='MacPorts'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PostgreSQL vs. libreadline on OSX</title><content type='html'>Today Thom Brown posted a &lt;a href="http://archives.postgresql.org/message-id/AANLkTi=m2+N-9r0qTW9AS4iLHdy_xEVPF8Os+t9TmnUb@mail.gmail.com"&gt;bug report&lt;/a&gt; to pgsql-bugs, where he asked for a potential issue with the interactive terminal psql. As the following reply from Tom Lane explained, this is a long standing issue with the libedit package Apple ships with OSX. Yes, libedit, since libreadline under OSX is just a symlink to libedit:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;% ls -la /usr/lib/libreadline.dylib &lt;br /&gt;lrwxr-xr-x  1 root  wheel  15 15 Sep  2009 /usr/lib/libreadline.dylib@ -&gt; libedit.2.dylib&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you just configure your PostgreSQL build without any special options, the PostgreSQL binaries will be linked against libedit.&lt;br /&gt;There were several &lt;a href="http://archives.postgresql.org/pgsql-bugs/2010-04/msg00127.php"&gt;discussions&lt;/a&gt; about this in the past and this was even reported to Apple. However, since now (i'm on OSX 10.6.6 for example), nothing happened and the shipped libedit is still unusable with psql.&lt;br /&gt;&lt;br /&gt;If you really need to build your own PostgreSQL binaries on OSX (for example you want do a review for a patch in the current &lt;a href="https://commitfest.postgresql.org/action/commitfest_view?id=9"&gt;CommitFest&lt;/a&gt; ;)), i always recommend to use &lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt; and their packaging. I use it for nearly two years and it works quite well (well, at least all libraries required by my installation are working). There's a fairly &lt;a href="http://www.macports.org/install.php"&gt;good instruction&lt;/a&gt; on how to setup MacPorts on your MacBook. If you have done your package installation, simply point the configure script to the correct location of the libraries and header files:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;./configure --with-libraries=/opt/local/lib --with-includes=/opt/local/include ...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;/opt/local&lt;/span&gt; is the default location for libraries installed from MacPorts. You also might want to specify additional options. At least, &lt;span style="font-style:italic;"&gt;--with-includes&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;--with-libraries&lt;/span&gt; are necessary to point your PostgreSQL builds to the correct libraries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-2067070845976636934?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/2067070845976636934/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=2067070845976636934' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/2067070845976636934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/2067070845976636934'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2011/01/postgresql-vs-libreadline-on-osx.html' title='PostgreSQL vs. libreadline on OSX'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-4967839232269830762</id><published>2010-11-05T09:46:00.016+01:00</published><updated>2010-11-05T10:30:03.284+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Slony-I'/><title type='text'>Building Slony-I on OSX</title><content type='html'>Just stumpled across this today while trying to build a fresh git clone of Slony-I on my MacBook; To build Slony-I on a OSX box (in my case 10.6.4), you might do the following on your box:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;% ./configure --prefix=$PGSQL_HOME --with-pgconfigdir=$PGSQL_HOME/bin&lt;br /&gt;...&lt;br /&gt;configure: error: Headers for libpqserver are not found in the includeserverdir.&lt;br /&gt;    This is the path to postgres.h. Please specify the includeserverdir with&lt;br /&gt;    --with-pgincludeserverdir=&amp;lt;dir&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, of course you are following this gentle hint and try again with a proper include path:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;% ./configure --prefix=$PGSQL_HOME --with-pgconfigdir=$PGSQL_HOME/bin --with-pgincludeserverdir=$PGSQL_HOME/include/server&lt;br /&gt;...&lt;br /&gt;configure: error: Headers for libpqserver are not found in the includeserverdir.&lt;br /&gt;    This is the path to postgres.h. Please specify the includeserverdir with&lt;br /&gt;    --with-pgincludeserverdir=&amp;lt;dir&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Uhm, doesn't work either. A good way to find out what's really going on now is to have a look into the &lt;i&gt;config.log&lt;/i&gt; (located in the Slony-I source directory) and check what exactly is causing this error. Open the file and simply search for postgres.h. You'll find the following line there (ignore my path names here, they surely differ from yours):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;In file included from /Users/bernd/pgsql-dev/install/REL9_0_STABLE/include/server/postgres.h:47,&lt;br /&gt;                 from conftest.c:80:&lt;br /&gt;/Users/bernd/pgsql-dev/install/REL9_0_STABLE/include/server/c.h:99:21: error: libintl.h: No such file or directory&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ah okay, it is indeed failing compiling the conftest.c file while including the PostgreSQL headers. Now that i saw this i remembered that i had my local development PostgreSQL-builds configured with &lt;i&gt;--enable-nls&lt;/i&gt;, which need to include &lt;i&gt;gettext/libintl&lt;/i&gt;. Since OSX doesn't ship with the latter, they were installed from MacPorts, which is located in &lt;i&gt;/opt/local/include&lt;/i&gt;. So the solution is to just include those header path as well. PostgreSQL has an extra configure switch &lt;i&gt;--with-includes&lt;/i&gt;, unfortunately the configure script in Slony-I is missing this, so i decided to go with this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;% CFLAGS='-I /opt/local/include' ./configure --prefix=$PGSQL_HOME --with-pgconfigdir=$PGSQL_HOME/bin&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;&lt;br /&gt;That worked and i was finally able to sucessfully build Slony-I on my MacBook. Hope this helps anybody facing the same issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-4967839232269830762?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/4967839232269830762/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=4967839232269830762' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/4967839232269830762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/4967839232269830762'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2010/11/building-slony-i-on-osx.html' title='Building Slony-I on OSX'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-7882620303643568</id><published>2010-08-06T16:32:00.013+02:00</published><updated>2010-08-10T15:02:20.807+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Froscon'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PostgreSQL at FroSCon 2010</title><content type='html'>Like last year, the &lt;a href="http://www.pgug.de/"&gt;German PostgreSQL User Group&lt;/a&gt; will have a Devroom at &lt;a href="http://www.froscon.de"&gt;FroSCon&lt;/a&gt; (Sankt Augustin, Germany) this year. There will be talks around PostgreSQL, ASP.NET, the upcoming feature set in 9.0 and a workshop how to setup PostgreSQL 9.0 replication. The talks in detail can be found &lt;a href="http://programm.froscon.org/2010/day_2010-08-22.de.html"&gt;here&lt;/a&gt; (look for room C117).&lt;br /&gt;&lt;br /&gt;For people interested in technical discussions or brainstorming, there's a booth at the conference, too, where people can meet PostgreSQL community members to discuss their questions. See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-7882620303643568?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/7882620303643568/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=7882620303643568' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7882620303643568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7882620303643568'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2010/08/postgresql-at-froscon-2010.html' title='PostgreSQL at FroSCon 2010'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-852112378192586791</id><published>2010-02-20T00:56:00.010+01:00</published><updated>2010-02-20T01:22:00.189+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='CeBIT'/><title type='text'>CeBIT 2010</title><content type='html'>... is coming up soon. &lt;a href="http://www.cebit.de"&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="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-852112378192586791?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/852112378192586791/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=852112378192586791' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/852112378192586791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/852112378192586791'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2010/02/cebit-2010.html' title='CeBIT 2010'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-2701875470984246784</id><published>2010-01-21T12:00:00.004+01:00</published><updated>2010-01-21T12:31:12.458+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='EU'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source Databases'/><title type='text'>EU, Open Source Databases</title><content type='html'>There were plenty of discussions about the acquisition of Sun by Oracle and the future of MySQL. Now, it seems the EU is going to approve the deal, as long as we can trust this article from &lt;a href="http://www.ftd.de/it-medien/it-telekommunikation/:sun-uebernahme-oracle-setzt-sich-in-bruessel-durch/50063197.html"&gt;Financial Times Germany&lt;/a&gt;.  So far so good...please note that i don't want to rant about MySQL and the acquisition through Oracle (i really have no interest in this). However, this article lists comments from an EU comissioner involved in the decision making process, which makes me wonder.&lt;br /&gt;&lt;br /&gt;According to the article, commissioner Neelie Kroes has concerns regarding to the acquisition, since Oracle might starve the development of MySQL to get rid of a competitor on the database market. Without MySQL, customers won't have a &lt;span style="font-weight:bold;"&gt;free&lt;/span&gt; alternative to commercial databases from Oracle, Microsoft and IBM anymore.&lt;br /&gt;&lt;br /&gt;This is just crazy, if you look at the &lt;a href="http://www.postgresql.org/about/featurematrix"&gt;feature set&lt;/a&gt; PostgreSQL currently delivers (think of Window Functions, Recursive Queries).  With the upcoming release PostgreSQL &lt;a href="http://developer.postgresql.org/pgdocs/postgres/hot-standby.html"&gt;will catch up&lt;/a&gt; with Oracle Standby Options and will add extended SQL features like exclusion constraints. Commercial support isn't a problem, a look at the current list of &lt;a href="http://www.postgresql.org/support/professional_support_europe"&gt;support companies&lt;/a&gt; gives plenty of them. So there is still one alternative at least, but maybe i'm missing their point.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-2701875470984246784?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/2701875470984246784/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=2701875470984246784' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/2701875470984246784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/2701875470984246784'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2010/01/eu-open-source-databases.html' title='EU, Open Source Databases'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-978679612740670278</id><published>2009-12-02T21:03:00.003+01:00</published><updated>2009-12-02T22:18:24.990+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PostgreSQL and its increasing popularity</title><content type='html'>So i had just another PostgreSQL course at the LinuxHotel in Essen. As always, i enjoyed working there with people interested in learning PostgreSQL within a very nice atmosphere. The reason i'm blogging about this, is that i'm really impressed how PostgreSQL has gained momentum over the last three years. &lt;br /&gt;&lt;br /&gt;Doing such courses a few times a year at the LinuxHotel and getting regular feedback from attendees, i noticed that PostgreSQL has reached various places in the german industry and administration. Its used in ERP, Inventory Control, Data Warehouses, Webapplications, Information Retrieval. Often PostgreSQL serves mission critical applications, sometimes its used to implement a satellite system along with some other proprietary product. In many installations this was the entry key for PostgreSQL at all, since this allowed people to get their experience with PostgreSQL in a production environment without a radical change. They used this opportunity to build up their knowledge and infrastructure they need to run PostgreSQL as a backend for their applications and to recognize its reliability and stability. There are examples out there, where PostgreSQL finally replaced the main system afterwards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-978679612740670278?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/978679612740670278/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=978679612740670278' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/978679612740670278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/978679612740670278'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2009/12/postgresql-and-its-increasing.html' title='PostgreSQL and its increasing popularity'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-7673466857262396955</id><published>2009-09-22T22:00:00.006+02:00</published><updated>2009-11-05T08:36:08.581+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Slony-I'/><title type='text'>Cloning Slony Nodes</title><content type='html'>&lt;h2&gt;Motivation&lt;/h2&gt;&lt;br /&gt;The new stable branch 2.0 of &lt;a href="http://main.slony.info"&gt;Slony-I&lt;/a&gt; is out for a while now. Time to blog about one of my favorite new features there, cloning an existing node without doing an initial &lt;a href="http://main.slony.info/documentation/stmtsubscribeset.html"&gt;SUBSCRIBE&lt;/a&gt; command. &lt;br /&gt;&lt;br /&gt;Normally administrators have to perform a subscription for each new node they want to add to their Slony-I cluster. This initial subscription procedure uses PostgreSQL's &lt;a href="http://www.postgresql.org/docs/8.4/interactive/sql-copy.html"&gt;COPY&lt;/a&gt; command to copy over the whole dataset and creating all indexes afterwards. This whole approach can take a fairly long time on bigger slaves, especially if you have many indexes on them. &lt;br /&gt;&lt;br /&gt;In PostgreSQL 8.4 there exists a new pg_restore method, parallel restore (see the &lt;a href="http://www.postgresql.org/docs/8.4/interactive/app-pgrestore.html"&gt;pg_restore -j&lt;/a&gt; command line option). This allows to restore tables and indexes in parallel. If you have machines with more than one cpu core (and number of discs, depending on your storage setup), this can speedup creation of the database, thus making the CLONE PREPARE interesting. &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Cloning Procedure&lt;/h2&gt;&lt;br /&gt;First at all, we have to figure out, which node is the source and which node is the new target node. In Slony-I, a node defines a specific database which takes part in the replication. Consider the following three nodes: &lt;br /&gt;&lt;code&gt; &lt;br /&gt;node 1: host=master.db dbname=movies &lt;br /&gt;node 2: host=slave1.db dbname=movies &lt;br /&gt;node 3: host=slave2.db dbname=movies &lt;br /&gt;&lt;/code&gt; &lt;br /&gt;&lt;span style="font-style:italic;"&gt;node 1&lt;/span&gt; is our &lt;span style="font-style:italic;"&gt;origin&lt;/span&gt;, the master database node in a Slony-I cluster. &lt;span style="font-style:italic;"&gt;node 2&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;node 3&lt;/span&gt; hosts the slave database node (or &lt;span style="font-style:italic;"&gt;subscriber&lt;/span&gt; in the Slony-I universe), where &lt;span style="font-style:italic;"&gt;node 3&lt;/span&gt; is going to be added to the cluster as a clone of &lt;span style="font-style:italic;"&gt;node 2&lt;/span&gt;. We assume master.db and slave1.db are already set up with Slony-I.&lt;br /&gt;&lt;br /&gt;To start over, we need a small &lt;a href="http://main.slony.info/documentation/slonik.html"&gt;slonik&lt;/a&gt; script, which clones the node info of &lt;span style="font-style:italic;"&gt;node 2&lt;/span&gt; to our new node. The &lt;a href="http://main.slony.info/documentation/stmtcloneprepare.html"&gt;CLONE PREPARE&lt;/a&gt; command copies the node information and adjusts all required node information in the Slony-I catalog (e.g. adding the node to sl_path). Every slonik script needs a preamble, which defines the cluster name and the node connection information described above. To ease this task, i use a small file which can be easily included from other slonik scripts, e.g. &lt;br /&gt;&lt;code&gt; &lt;br /&gt;$ cat slonik.inc &lt;br /&gt;define cluster movies; &lt;br /&gt;define conn_master 'host=master.db dbname=movies'; &lt;br /&gt;define conn_slave1 'host=slave1.db dbname=movies'; &lt;br /&gt;define conn_slave2 'host=slave2.db dbname=movies'; &lt;br /&gt;define master 1; &lt;br /&gt;define slave1 2; &lt;br /&gt;define slave2 3; &lt;br /&gt;&lt;br /&gt;cluster name = @cluster; &lt;br /&gt;&lt;br /&gt;node @master admin conninfo = @conn_master; &lt;br /&gt;node @slave1 admin conninfo = @conn_slave1; &lt;br /&gt;node @slave2 admin conninfo = @conn_slave2; &lt;br /&gt;&lt;/code&gt; &lt;br /&gt;Any slonik script can use the &lt;a href="http://main.slony.info/documentation/stmtinclude.html"&gt;INCLUDE&lt;/a&gt; directive to include the preamble. To clone slave1.db (node id 2) to slave2.db (node id  3) we use the following script then: &lt;br /&gt;&lt;code&gt; &lt;br /&gt;$ cat slony_clone_prepare.slonik &lt;br /&gt;&lt;br /&gt;include &amp;lt;slonik.inc&amp;gt;; &lt;br /&gt;&lt;br /&gt;## prepare cloning slave1.db (identified by node id 2)&lt;br /&gt;&lt;br /&gt;echo ' =&gt; prepare cloning'; &lt;br /&gt;&lt;br /&gt;clone prepare (id = @slave2, provider = @slave1, comment = 'clone of slave1.db'); &lt;br /&gt;&lt;br /&gt;# Wait until all nodes have received the event  &lt;br /&gt;wait for event(origin = @slave1, confirmed = ALL, wait on = @slave1); &lt;br /&gt;&lt;br /&gt;# Create a SYNC event and wait on every other node until they have confirmed. &lt;br /&gt;# We will do this to prevent the new node to miss any events created &lt;br /&gt;# in the meantime &lt;br /&gt;&lt;br /&gt;sync(id=@master); &lt;br /&gt;wait for event(origin=@master, confirmed=@slave1, wait on=@slave1); &lt;br /&gt;&lt;br /&gt;echo ' =&gt; clone prepared'; &lt;br /&gt;echo ' now copy movies@slave1.db to movies@slave2.db';&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;To execute the script, pass it to slonik: &lt;br /&gt;&lt;code&gt; &lt;br /&gt;$ slonik &lt; slony_clone_prepare.slonik&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;Now we can start and dump the database from node 2 to the new node 3. Create the database on the new node (don't forget to create pl/pgsql on it, it's required for Slony-I). Of course, you need to have Slony-I installed on this node, too. We are going to use three CPU cores to speedup the restore with pg_restore's parallel restore capability. On the new node, we are executing the following command: &lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ su - postgres&lt;br /&gt;$ createdb movies &amp;&amp; createlang plpgsql movies&lt;br /&gt;$ pg_dump -Fc -h slave1.db movies &gt; movies.pg_dump &lt;br /&gt;$ pg_restore -j3 -h slave2.db -d movies movies.pg_dump&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;After the database ist restored, we have to finish the clone process with &lt;a href="http://main.slony.info/documentation/stmtclonefinish.html"&gt;CLONE FINISH&lt;/a&gt; command, implemented by the following script: &lt;br /&gt;&lt;code&gt; &lt;br /&gt;$ cat slony_clone_finish.slonik &lt;br /&gt;&lt;br /&gt;include &amp;lt;slonik.inc&amp;gt;; &lt;br /&gt;&lt;br /&gt;## finish cloning of slave1.db&lt;br /&gt;echo ' =&gt; try to finish cloning slave1.db'; &lt;br /&gt;clone finish(id = @slave2, provider = @slave1); &lt;br /&gt;&lt;br /&gt;# store connection path for the new node &lt;br /&gt;store path(server = 1, client = 3, conninfo = @conn_master); &lt;br /&gt;store path(server = 3, client = 1, conninfo = @conn_slave2); &lt;br /&gt;&lt;br /&gt;echo ' =&gt; finished cloning slave1.db'; &lt;br /&gt;&lt;br /&gt;$ slonik &lt; slony_clone_finish.slonik&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;This script calls CLONE FINISH first and stores the connection path for the new node in the cluster configuration. This is important, otherwise the slon daemon won't be able to talk to the new node. Now start the slon daemon for the new node: &lt;br /&gt;&lt;code&gt; &lt;br /&gt;$ slon movies 'host=slave2.db dbname=movies' &lt;br /&gt;&lt;/code&gt; &lt;br /&gt;Depending on the platform you are, you may need to adjust your runlevel scripts to start the slon daemon automatically on each start (at least, don't forget to adjust the runlevel configuration). You also have to take care which user runs the slon daemon, you may have to specify a specific user in the connection string. The new node should immediately starting to catch up with all pending events and replicate all data changes which occured during the cloning procedure. &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;br /&gt;Cloning a node with CLONE PREPARE has the advantage that it enables the usage of parallel restore to speed up building a new Slony-I slave. It also avoids the additional load on the origin, since all I/O is located on the target and source node only.  The new node becomes a complete clone of the source node, thus it replicates exactly the same objects as the source node.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-7673466857262396955?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/7673466857262396955/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=7673466857262396955' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7673466857262396955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7673466857262396955'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2009/09/cloning-slony-nodes.html' title='Cloning Slony Nodes'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-1698506864018104143</id><published>2009-09-04T10:26:00.005+02:00</published><updated>2009-09-04T21:50:50.935+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MacOS X'/><category scheme='http://www.blogger.com/atom/ns#' term='DocBook'/><title type='text'>Building PostgreSQL Documentation on MacOS X</title><content type='html'>During the latest &lt;a href="http://commitfest.postgresql.org"&gt;CommitFest&lt;/a&gt; i've started to use MacOS X while reviewing patches as a Round Robin Reviewer. I'm going to love OS X and its shiny GUI, but i had heavy problems to build the PostgreSQL Documentation on that platform. The core problem is, that on OS X there's no really good Docbook distribution available (at least, i haven't found one, which is usable out of the box). So i decided to go with &lt;a href="http://www.macports.org/install.php"&gt;macports&lt;/a&gt;, since i had some very good experience with them in the past. Please note that i'm not a DocBook hacker...i'm just using it to build at least the PostgreSQL docs. So i've started installing openjade from macports first:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo port install openjade&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This installs openjade into /opt/local/share/sgml/openjade. Unfortunately, there's no Docbook SGML in macports, so i followed the PostgreSQL instructions and downloaded the following packages:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oasis-open.org/docbook/sgml/4.2/docbook-4.2.zip"&gt;DocBook SGML DTD&lt;/a&gt;&lt;br /&gt;&lt;a href="http://downloads.sourceforge.net/project/docbook/docbook-dsssl/1.79/docbook-dsssl-1.79.zip?use_mirror=freefr"&gt;DocBook DSSSL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.oasis-open.org/cover/ISOEnts.zip"&gt;ISO 8879 Entities&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The ISO 8879 character entities can also be obtained from macports:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ sudo port install iso8879&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is what I preferred. I went on and installed the DocBook DTD and DocBook DSSSL packages as described in the &lt;a href="http://www.postgresql.org/docs/current/interactive/docguide-toolsets.html"&gt;PostgreSQL Documentation&lt;/a&gt;. Instead of &lt;span style="font-style:italic;"&gt;/usr/local/share/sgml&lt;/span&gt; i've used the already created directory &lt;span style="font-style:italic;"&gt;/opt/local/share/sgml&lt;/span&gt;, used by macports. Unzipping the downloaded archives gives the following layout:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;drwxr-xr-x  36 root  admin   1,2K  3 Sep 23:45 docbook/&lt;br /&gt;drwxr-xr-x  21 root  admin   714B  3 Sep 23:34 docbook-dsssl-1.79/&lt;br /&gt;drwxr-xr-x  22 root  admin   748B  3 Sep 14:10 iso8879/&lt;br /&gt;drwxr-xr-x  12 root  admin   408B  4 Sep 10:24 openjade/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Because the ISO character entities are located outside the docbook directories, I needed to adjust the catalog file &lt;span style="font-style:italic;"&gt;/opt/local/share/sgml/docbook/docbook.cat&lt;/span&gt;. I dumped the whole entity section from the file and added a CATALOG reference instead:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cat docbook/docbook.cat&lt;br /&gt;[...]&lt;br /&gt;  -- ...................................................................... --&lt;br /&gt;  -- ISO entity sets ...................................................... --&lt;br /&gt;CATALOG "../iso8879/catalog"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This references &lt;span style="font-style:italic;"&gt;/opt/local/share/sgml/iso8879/catalog&lt;/span&gt; which includes all ISO character entities then. Afterwards i tried PostgreSQL &lt;span style="font-style:italic;"&gt;configure&lt;/span&gt;, unfortunately that didn't work. The first problem i've encountered was that &lt;span style="font-style:italic;"&gt;/opt/local/bin/collateindex.pl&lt;/span&gt; wasn't installed with executable rights:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-rw-r--r--  2 root  admin  17503  3 Sep 15:21 collateindex.pl&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;configure&lt;/span&gt; was not able to locate the script (so, what's the point in installing a script in a bin directory without executable flags??). Firing a &lt;code&gt;chmod a+x /opt/local/bin/collateindex.pl&lt;/code&gt; fixed that issue. Another problem was, that openjade wasn't able to find the docbook DTD's. After trying around a little bit, i realized that openjade looks into &lt;span style="font-style:italic;"&gt;/opt/local/share/sgml&lt;/span&gt;, not in &lt;span style="font-style:italic;"&gt;/opt/local/share/sgml/openjade&lt;/span&gt;, as someone might expect. I created a symlink to &lt;span style="font-style:italic;"&gt;openjade/catalog&lt;/span&gt;. At a first try this didn't work either. Foolish as i am, i forgot that the catalog file references the objects with relative paths. Creating a separate catalog file in &lt;span style="font-style:italic;"&gt;/opt/local/share/sgml/catalog&lt;/span&gt; did the job finally:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cat /opt/local/share/sgml/catalog &lt;br /&gt;PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "openjade/fot.dtd"&lt;br /&gt;PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "openjade/dsssl.dtd"&lt;br /&gt;PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "openjade/style-sheet.dtd"&lt;br /&gt;PUBLIC "-//OpenJade//DTD DSSSL Style Sheet//EN" "openjade/style-sheet.dtd"&lt;br /&gt;SYSTEM "openjade/builtins.dsl" "openjade/builtins.dsl"&lt;br /&gt;CATALOG "docbook/docbook.cat"&lt;br /&gt;CATALOG "docbook-dsssl-1.79/catalog"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The directory layout i'm going to work with looks as follows:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-rw-r--r--   1 root  admin   541  4 Sep 10:22 catalog&lt;br /&gt;drwxr-xr-x  18 root  admin   612  4 Sep 15:03 docbook/&lt;br /&gt;drwxr-xr-x  21 root  admin   714  3 Sep 23:34 docbook-dsssl-1.79/&lt;br /&gt;drwxr-xr-x   7 root  admin   238  3 Sep 14:10 html/&lt;br /&gt;drwxr-xr-x  22 root  admin   748  3 Sep 14:10 iso8879/&lt;br /&gt;drwxr-xr-x  12 root  admin   408  4 Sep 10:24 openjade/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The HTML docs are finally build by the commands&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ eval ./configure $(pg_config --configure) DOCBOOKSTYLE=/opt/local/share/sgml/&lt;br /&gt;$ cd doc/src/sgml; make&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Leave your comments if you have some additional suggestions or better ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-1698506864018104143?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/1698506864018104143/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=1698506864018104143' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/1698506864018104143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/1698506864018104143'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2009/09/building-postgresql-documentation-on.html' title='Building PostgreSQL Documentation on MacOS X'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-8076382447581038424</id><published>2008-12-11T12:54:00.006+01:00</published><updated>2008-12-11T13:27:13.570+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>How to get a table's OID</title><content type='html'>I often get questions from customers trying to work with OIDs of relations they need to add somewhere (three times just this week). For example, someone wants to add a special autovacuum configuration for a specific table. He then needs to find out the OID of the relation. People often tend to use the following query then:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;SELECT oid FROM pg_class WHERE relname = 'foo' AND relkind = 'r';&lt;br /&gt;  oid&lt;br /&gt;-------&lt;br /&gt; 16385&lt;br /&gt;(1 row)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This returns the current OID of the table and its relation name. The OID can then be used for everything you need it to. However, there's an much easier way to get that information: just use a cast of the relation name to regclass:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;SELECT 'foo'::regclass::oid;&lt;br /&gt;  oid&lt;br /&gt;-------&lt;br /&gt; 16385&lt;br /&gt;(1 row)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Or, to get back to the pg_autovacuum example above:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;INSERT INTO pg_autovacuum &lt;br /&gt;           VALUES('foo'::regclass, 't', -1, 0.05, -1, -1, -1, -1, -1, -1);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you are going to assign regclass to an OID type, you don't need the extra cast to OID, since there's an existing implicit cast to OID. There are other reg* casts available as well, for examaple:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;SELECT 'now'::regproc::oid;&lt;br /&gt; oid&lt;br /&gt;------&lt;br /&gt; 1299&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;SELECT 'int4'::regtype::oid;&lt;br /&gt; oid&lt;br /&gt;-----&lt;br /&gt;  23&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-8076382447581038424?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/8076382447581038424/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=8076382447581038424' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/8076382447581038424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/8076382447581038424'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2008/12/how-to-get-tables-oid.html' title='How to get a table&apos;s OID'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-7519424918202866565</id><published>2008-07-03T11:58:00.001+02:00</published><updated>2008-07-21T12:01:39.360+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Froscon'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><title type='text'>Froscon 2008</title><content type='html'>The program schedule for &lt;a href="http://programm.froscon.org/2008/"&gt;Froscon 2008&lt;/a&gt; is online. Again, there will be plenty of very interesting talks and i think it's going to be a very nice community event. So if you want to attend a friendly, very nice event, we should met at Froscon 2008. Regarding PostgreSQL, i'll have a talk about "PostgreSQL Troubleshooting", and there will be a PostgreSQL Workshop teached by Susanne Ebrecht.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-7519424918202866565?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/7519424918202866565/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=7519424918202866565' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7519424918202866565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/7519424918202866565'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2008/07/froscon-2008.html' title='Froscon 2008'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-5122827167282985625</id><published>2008-05-09T11:58:00.000+02:00</published><updated>2008-05-09T16:58:50.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiling'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='pSeries'/><title type='text'>Building PostgreSQL on IBM pSeries/SLES 10</title><content type='html'>It turns out that compiling PostgreSQL on IBM's pSeries isn't that straightforward. Compiling PostgreSQL is very easy, just do a configure; make install and your job is done. However, Red Hat and SuSE on IBM's pSeries are multiarch platforms with 64-bit kernels and 32-bit userspace, capable of running and building 64-bit applications. To build PostgreSQL you have to specify some extra compiler flags. On SLES/ppc64 we had success with the following settings, passed to make:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;make CC="gcc -m64" LDREL="-r -melf64ppc"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-5122827167282985625?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/5122827167282985625/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=5122827167282985625' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/5122827167282985625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/5122827167282985625'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2008/05/building-postgresql-on-ibm-pseriessles.html' title='Building PostgreSQL on IBM pSeries/SLES 10'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6695249769823901911.post-903122488501411182</id><published>2008-04-22T22:53:00.000+02:00</published><updated>2008-04-22T23:02:49.131+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='GIT'/><title type='text'>PostgreSQL development with git</title><content type='html'>After getting an account from Peter Eisentraut i've just started to publish my current development efforts regarding PostgreSQL on &lt;a href="http://git.postgresql.org/?p=~psoo/postgresql.git;a=summary"&gt;git.postgresql.org&lt;/a&gt;. I found this a very neat idea, since developers are able to track development from other people in an easy way, without sending huge patches around. Also big patches are hard to read and if you are able to track development live, reviewing a new functionality gets &lt;strong&gt;a lot&lt;/strong&gt; easier. I've never used git before, so let's see how it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6695249769823901911-903122488501411182?l=psoos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psoos.blogspot.com/feeds/903122488501411182/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6695249769823901911&amp;postID=903122488501411182' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/903122488501411182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6695249769823901911/posts/default/903122488501411182'/><link rel='alternate' type='text/html' href='http://psoos.blogspot.com/2008/04/postgresql-development-with-git.html' title='PostgreSQL development with git'/><author><name>Bernd Helmle</name><uri>http://www.blogger.com/profile/12899725630461932997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
