<?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/'><id>tag:blogger.com,1999:blog-7997313029981170997.post5507253406254744795..comments</id><updated>2010-05-18T09:28:43.449-04:00</updated><category term='mobile'/><category term='Fedora'/><category term='postgres'/><category term='tools'/><category term='sysadmin'/><category term='pentaho'/><category term='community'/><category term='hosting'/><category term='analytics'/><category term='SELinux'/><category term='perl data-structures json'/><category term='redhat'/><category term='audio'/><category term='travel'/><category term='css'/><category term='git'/><category term='tips'/><category term='nginx'/><category term='Spree'/><category term='cakephp'/><category term='email'/><category term='nosql'/><category term='social-networking'/><category term='unicode'/><category term='performance'/><category term='piggybak'/><category term='eye-candy'/><category term='reporting'/><category term='thrift'/><category term='facebook'/><category term='visualization'/><category term='openbsd'/><category term='mysql'/><category term='scalability'/><category term='riak'/><category term='security'/><category term='CentOS'/><category term='graphics'/><category term='cucumber'/><category term='rvm'/><category term='cloud'/><category term='django'/><category term='remote-work'/><category term='networking'/><category term='wordpress'/><category term='perlbrew'/><category term='optimization'/><category term='book review'/><category term='dropbox'/><category term='sinatra'/><category term='design'/><category term='mp3'/><category term='ruby-and-ruby-on-rails'/><category term='testing'/><category term='open-source'/><category term='json'/><category term='ruby'/><category term='yui'/><category term='virtualization'/><category term='COTS'/><category term='Camps'/><category term='javascript'/><category term='workflow'/><category term='sponsorship'/><category term='perl'/><category term='messaging'/><category term='environment'/><category term='gnu'/><category term='lua'/><category term='rpm'/><category term='browsers'/><category term='configuration-management'/><category term='python'/><category term='ecommerce'/><category term='Conference'/><category term='voldemort'/><category term='image'/><category term='jasper'/><category term='clients'/><category term='dbdpg'/><category term='Android'/><category term='database'/><category term='version-control'/><category term='linux'/><category term='USPS'/><category term='data-warehouse'/><category term='openafs'/><category term='cassandra'/><category term='mondaylinks'/><category term='php'/><category term='Debian'/><category term='monitoring'/><category term='liquid-galaxy'/><category term='audit'/><category term='Bucardo'/><category term='Java'/><category term='mongodb'/><category term='API'/><category term='seo'/><category term='SeniorNet'/><category term='company'/><category term='jquery'/><category term='jobs'/><category term='sql'/><category term='search'/><category term='Ubuntu'/><category term='Interchange'/><category term='caching'/><category term='ipv6'/><title type='text'>Comments on End Point Blog: PostgreSQL template databases to restore to a know...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.endpoint.com/feeds/5507253406254744795/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default'/><link rel='alternate' type='text/html' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html'/><author><name>Jon Jensen</name><uri>http://www.blogger.com/profile/18273388885281263476</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='25' src='http://bp3.blogger.com/_rFXHDrokbpE/SJHpPosaIQI/AAAAAAAAAAM/GnqeZuLItOA/S220/jon1.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7997313029981170997.post-3856675262150081610</id><published>2010-05-18T09:28:43.443-04:00</published><updated>2010-05-18T09:28:43.443-04:00</updated><title type='text'>Andres: I&amp;#39;ve used exactly that strategy myself...</title><content type='html'>Andres: I&amp;#39;ve used exactly that strategy myself in an attempt to apply the test-driven development methodology to Postgres-specific work.  It ended up working out nicely, and you end up with a DDL script that will back itself out automatically if it fails in foreseeable ways when applied in production, which is pretty nice.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/3856675262150081610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/3856675262150081610'/><link rel='alternate' type='text/html' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html?showComment=1274189323443#c3856675262150081610' title=''/><author><name>Ethan Rowe</name><uri>http://www.blogger.com/profile/07543304949984321650</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html' ref='tag:blogger.com,1999:blog-7997313029981170997.post-5507253406254744795' source='http://www.blogger.com/feeds/7997313029981170997/posts/default/5507253406254744795' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1338855437'/></entry><entry><id>tag:blogger.com,1999:blog-7997313029981170997.post-6829831809846264383</id><published>2010-05-17T19:55:55.556-04:00</published><updated>2010-05-17T19:55:55.556-04:00</updated><title type='text'>There&amp;#39;s another approach that might work depen...</title><content type='html'>There&amp;#39;s another approach that might work depending on what you do.  I run a lot of unit tests against my stored procedures.  To be able to roll back to a known good state after each run, I throw and catch an exception inside my test stored procedure.  Something like this:&lt;br /&gt;&lt;br /&gt;--- RUN MY TESTS HERE ---&lt;br /&gt;RAISE EXCEPTION &amp;#39;ROLLBACK&amp;#39;;&lt;br /&gt;EXCEPTION WHEN raise_exception THEN &lt;br /&gt;RAISE NOTICE &amp;#39;ROLLED BACK&amp;#39;;&lt;br /&gt;&lt;br /&gt;This causes any changes to be rolled back, and it&amp;#39;s incredibly fast!  There&amp;#39;s functions I wrote to facilitate this type of testing: &lt;a href="http://pgfoundry.org/projects/plu/" rel="nofollow"&gt;PLUnit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This can also be done using save points, if operating outside of a stored procedure.  Something like this:&lt;br /&gt;&lt;br /&gt;SAVEPOINT my_savepoint;&lt;br /&gt;--- RUN MY TESTS HERE ---&lt;br /&gt;ROLLBACK TO SAVEPOINT my_savepoint;&lt;br /&gt;&lt;br /&gt;This solution is obviously not workable for the manual testing of a full application, but more for automated (unit) testing</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/6829831809846264383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/6829831809846264383'/><link rel='alternate' type='text/html' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html?showComment=1274140555556#c6829831809846264383' title=''/><author><name>Andres Olarte</name><uri>http://www.blogger.com/profile/03349061816860343588</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html' ref='tag:blogger.com,1999:blog-7997313029981170997.post-5507253406254744795' source='http://www.blogger.com/feeds/7997313029981170997/posts/default/5507253406254744795' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-22688167'/></entry><entry><id>tag:blogger.com,1999:blog-7997313029981170997.post-8654695022577288587</id><published>2010-05-13T10:04:13.435-04:00</published><updated>2010-05-13T10:04:13.435-04:00</updated><title type='text'>Philippe: Thanks for the links, looks interesting....</title><content type='html'>Philippe: Thanks for the links, looks interesting.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/8654695022577288587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/8654695022577288587'/><link rel='alternate' type='text/html' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html?showComment=1273759453435#c8654695022577288587' title=''/><author><name>Greg Sabino Mullane</name><uri>http://www.blogger.com/profile/01284672712225991979</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html' ref='tag:blogger.com,1999:blog-7997313029981170997.post-5507253406254744795' source='http://www.blogger.com/feeds/7997313029981170997/posts/default/5507253406254744795' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-362101321'/></entry><entry><id>tag:blogger.com,1999:blog-7997313029981170997.post-909387301343067965</id><published>2010-05-13T08:07:25.226-04:00</published><updated>2010-05-13T08:07:25.226-04:00</updated><title type='text'>I think that all objects should be stored in sourc...</title><content type='html'>I think that all objects should be stored in source control just like any code should be. From there you can have labels and branches and a simple build script to build a pristine database from source passing in a label or branch that you want to build from.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/909387301343067965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/909387301343067965'/><link rel='alternate' type='text/html' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html?showComment=1273752445226#c909387301343067965' title=''/><author><name>Bob</name><uri>http://www.teamhenkel.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html' ref='tag:blogger.com,1999:blog-7997313029981170997.post-5507253406254744795' source='http://www.blogger.com/feeds/7997313029981170997/posts/default/5507253406254744795' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1042183809'/></entry><entry><id>tag:blogger.com,1999:blog-7997313029981170997.post-2797826154757068625</id><published>2010-05-13T04:17:34.916-04:00</published><updated>2010-05-13T04:17:34.916-04:00</updated><title type='text'>Hi,
The use of the template database is a nice tri...</title><content type='html'>Hi,&lt;br /&gt;The use of the template database is a nice trick.&lt;br /&gt;For cases when a relatively small part of the database is updated and no DDL operation is performed, I am developing a tool named E-Maj (a first version being available on &lt;a href="http://pgfoundry.org/projects/emaj/" rel="nofollow"&gt;pgfoundry&lt;/a&gt;) with a &lt;a href="http://pgfoundry.org/docman/view.php/1000477/13499/Emaj.0.5.en.pdf" rel="nofollow"&gt;presentation&lt;/a&gt;. The concept is an extension of table_log contrib. Some supplied functions allow to create group of tables on which it is possible to set marks at predefined point in time and then, if needed, rollback all row insertions, updates and deletions up to one of these marks.&lt;br /&gt;I intend to improve this tool. But if it can already help someone... Of course, any feedback is welcome.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/2797826154757068625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7997313029981170997/5507253406254744795/comments/default/2797826154757068625'/><link rel='alternate' type='text/html' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html?showComment=1273738654916#c2797826154757068625' title=''/><author><name>Philippe Beaudoin</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.endpoint.com/2010/05/postgresql-template-databases-to.html' ref='tag:blogger.com,1999:blog-7997313029981170997.post-5507253406254744795' source='http://www.blogger.com/feeds/7997313029981170997/posts/default/5507253406254744795' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-988668170'/></entry></feed>
