<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Postgres OnLine Journal - basics</title>
    <link>http://www.postgresonline.com/journal/</link>
    <description>an In depth look at the PostgreSQL open source database</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <pubDate>Fri, 11 Nov 2011 21:49:28 GMT</pubDate>

    <image>
        <url>http://www.postgresonline.com/journal/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Postgres OnLine Journal - basics - an In depth look at the PostgreSQL open source database</title>
        <link>http://www.postgresonline.com/journal/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>XPathing XML data with PostgreSQL</title>
    <link>http://www.postgresonline.com/journal/archives/232-XPathing-XML-data-with-PostgreSQL.html</link>
            <category>8.4</category>
            <category>9.0</category>
            <category>9.1</category>
            <category>9.2</category>
            <category>basics</category>
            <category>gis</category>
            <category>intermediate</category>
            <category>postgis</category>
            <category>postgresql versions</category>
    
    <comments>http://www.postgresonline.com/journal/archives/232-XPathing-XML-data-with-PostgreSQL.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=232</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=232</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;One of my favorite tools and I think that of many folks working with GIS and other kinds of Multimedia is the GDAL/OGR suite.
Though I started using it to conquer GIS ETL activities, I found myself using it for problems that are inherently not GIS at all. I talked
about the GDAL OGR2OGR component a while ago in &lt;a href=&quot;http://www.postgresonline.com/journal/archives/31-GDAL-OGR2OGR-for-Data-Loading.html&quot; target=&quot;_blank&quot;&gt;GDAL OGR2OGR for Data Loading&lt;/a&gt;
and this time I&#039;ll talk tangentially about its raster capabilities.  It is a fantastic tool for converting between various raster formats and applying various raster operations.
In PostGIS world the new 2.0 raster functionality puts an SQL wrapper around much of its power.  I&#039;m not going to talk about that though except as a fleeting comment to explore later (we&#039;ve got cool &lt;a href=&quot;http://www.postgis.org/documentation/manual-svn/RT_ST_MapAlgebraExpr2.html&quot; target=&quot;_blank&quot;&gt;2 band Map Algebra in PostGIS 2.0&lt;/a&gt; to flaunt its stuff).
So what does this have to do with XPathing XML data with PostgreSQL? Well that&#039;s what I&#039;m going to talk about what to do with machine generated data that comes at you in XML format.&lt;/p&gt;
&lt;p&gt;A lot of machine generated data is hitting us in an XML like form.  I talked about GPX data and navigating that in &lt;a href=&quot;http://www.postgresonline.com/journal/archives/116-Loading-and-Processing-GPX-XML-files-using-PostgreSQL.html&quot; target=&quot;_blank&quot;&gt;Which by the way GDAL/OGR can load and export easily into/out of a PostGIS enabled database&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;GDAL exposes another kind of machine generated data in XML format which turns out to be very useful for all kinds of things.  This is &lt;a href=&quot;http://en.wikipedia.org/wiki/Exchangeable_image_file_format&quot; target=&quot;_blank&quot;&gt;Exchangeable image file format (EXIF) data&lt;/a&gt;. There are all kinds 
of random text information embedded in pictures and this varies depending on what camera is taking it.  Newer cameras like the ones you have built into your iphone or android 
embed location based information into them sometimes like where you were standing when you took the picture.  Most cameras these days embed the time the picture was taken.
This information is important because if you are taking electronic notes while you are snapping your pictures, it provides an easy way to match up your notes with the picture about the object.  So what does this EXIF info look like when you point GDAL at it? We&#039;ll see. &lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/232-XPathing-XML-data-with-PostgreSQL.html#extended&quot;&gt;Continue reading &quot;XPathing XML data with PostgreSQL&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 11 Nov 2011 03:57:00 -0500</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/232-guid.html</guid>
    <category>etl</category>
<category>raster</category>
<category>regex</category>
<category>regular expressions</category>
<category>unnest</category>
<category>xml</category>
<category>xpath</category>

</item>
<item>
    <title>Sweat the small stuff, it really matters</title>
    <link>http://www.postgresonline.com/journal/archives/223-Sweat-the-small-stuff,-it-really-matters.html</link>
            <category>8.2</category>
            <category>8.4</category>
            <category>9.0</category>
            <category>9.1</category>
            <category>basics</category>
            <category>postgis</category>
            <category>postgresql versions</category>
    
    <comments>http://www.postgresonline.com/journal/archives/223-Sweat-the-small-stuff,-it-really-matters.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=223</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=223</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;In most release notices, it&#039;s the big shiny sexy features that get all the glamor, but in reality on day to day use
it&#039;s the small usability enhancements that make the most difference.  I&#039;m reminded about this now that I&#039;m working
on upgrade scripts and extensions for PostGIS.  There are a couple of new features that make application upgrades easier that I
regret not having in older versions of PostgreSQL we support and additional ones I had in other databases that I find lacking in PostgreSQL. PostgreSQL 8.2 for example brought us &lt;code&gt;DROP IF EXISTS ...&lt;/code&gt;
and all I can say is thank goodness we dropped support of prior versions of PostgreSQL in PostGIS 1.4 otherwise developing upgrade scripts would have been more of a nightmare.
PostgreSQL 8.4 introduced the ability to add additional columns to a view using &lt;code&gt;&lt;a href=&quot;http://www.postgresql.org/docs/8.4/static/sql-createview.html&quot; target=&quot;_blank&quot;&gt;CREATE OR REPLACE VIEW&lt;/a&gt;&lt;/code&gt; as
long as those columns were at the end of the view which Gabrielle Roth demonstrates an example of in &lt;a href=&quot;http://www.baconandtech.com/2011/10/04/this-weeks-find-create-or-replace-view/&quot; target=&quot;_blank&quot;&gt;This week’s find: CREATE OR REPLACE VIEW&lt;/a&gt;
If you were a MySQL user or application developer not having such features would be one reason to frown on PostgreSQL
and MySQL users and other database converts still have reasons to frown for lack of usability features they had 
in their other database that they feel naked without in PostgreSQL.&lt;/p&gt;

&lt;p&gt;In 9.1 we got two new DDL commands not much talked about that I am very excited about.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;&lt;a href=&quot;http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html&quot; target=&quot;_blank&quot;&gt;CREATE TABLE .. IF NOT EXISTS&lt;/a&gt;&lt;/code&gt;.  I can&#039;t tell you how many times I&#039;ve heard MySQL users whine about the lack of this in PostgreSQL
and I felt their pain.  It would be really nice to have this feature for other things such as TYPES or even possibly a CREATE OR REPLACE TYPE which would allow
some alteration of types like adding attributes at the end.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.postgresql.org/docs/9.1/static/sql-altertype.html&quot; target=&quot;-blank&quot;&gt;ALTER TYPE ..[ADD ATTRIBUTE] [RENAME ATTRIBUTE] [ADD VALUE]&lt;/a&gt;.
The [ADD VALUE] is a clause specific to ENUM types which allows you to add new enum values before or after an existing.  The lack of that feature
in prior versions was the major reason I stayed away from enums.&lt;/li&gt;
&lt;li&gt;And of cause my favorite CREATE EXTENSTION  ALTER EXTENSION family which admittedly do get talked about a lot more often and which I&#039;ll discuss more in a later
article.&lt;/li&gt;&lt;/ul&gt;. 

&lt;p&gt;I know it sounds like I&#039;m complaining.  That&#039;s because I am.  Honestly though, I think the first step to caring about something is really taking notice of its
flaws and wanting to change them.  The strength of an open source project is the ease with which it allows its developers and users to have a great impact on its direction.  This is something I do think PostgreSQL excels much much better than most open source projects.  I find a ton of flaws in PostGIS I&#039;d like to change and have and I am greatful that PostGIS, like PostgreSQL is not resistant to change if the community wants it. If you are going to take notice of flaws in other products without admitting to your own or admitting that some things are easier in other products and learning from them, then you are a hypocrite or living in a closet.  Now getting back to my complaining.  Things I miss in PostgreSQL that I had in others which I&#039;m sure I&#039;m not alone.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Being able to change a table column type of a table column that is used in a VIEW and have PostgreSQL just correct the type in the view
or allow me the option to change it later.  This is something we had in SQL Server which Leo whines about often.  Actually Leo&#039;s whining is more annoying than
the actual problem itself. The notice is at least very descriptive which is more than I can say for other databases.&lt;/li&gt;
	&lt;li&gt;Being able to reorder columns in a table. Again something fairly trivial to do in SQL Server and MySQL but not possible in PostgreSQL.&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 05 Oct 2011 09:15:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/223-guid.html</guid>
    
</item>
<item>
    <title>SQL Server to PostgreSQL: Converting table structure</title>
    <link>http://www.postgresonline.com/journal/archives/219-SQL-Server-to-PostgreSQL-Converting-table-structure.html</link>
            <category>basics</category>
            <category>beginner</category>
            <category>oracle</category>
            <category>plpgsql</category>
            <category>sql server</category>
    
    <comments>http://www.postgresonline.com/journal/archives/219-SQL-Server-to-PostgreSQL-Converting-table-structure.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=219</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=219</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;We&#039;ve been working on converting some of our SQL Server apps to PostgreSQL.   In this
article we&#039;ll describe some things to watch out for and provide a function we wrote to automate some of
the conversion.&lt;/p&gt;

&lt;p&gt;Although both databases are fairly ANSI-SQL compliant, there are still differences 
with their CREATE TABLE statements, data types, and how they handle other things that makes porting applications not so trivial. &lt;/p&gt;
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/219-SQL-Server-to-PostgreSQL-Converting-table-structure.html#extended&quot;&gt;Continue reading &quot;SQL Server to PostgreSQL: Converting table structure&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 04 Sep 2011 00:33:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/219-guid.html</guid>
    <category>migration</category>
<category>oracle</category>
<category>regular expressions</category>
<category>sql server</category>

</item>
<item>
    <title>Using PgAdmin PLPgSQL Debugger</title>
    <link>http://www.postgresonline.com/journal/archives/214-Using-PgAdmin-PLPgSQL-Debugger.html</link>
            <category>8.3</category>
            <category>8.4</category>
            <category>9.0</category>
            <category>9.1</category>
            <category>basics</category>
            <category>gis</category>
            <category>intermediate</category>
            <category>pgadmin</category>
            <category>plpgsql</category>
    
    <comments>http://www.postgresonline.com/journal/archives/214-Using-PgAdmin-PLPgSQL-Debugger.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=214</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=214</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;I&#039;m one of those old-fashioned folks that debugs with print lines and raise notices.  They&#039;re nice.
They always work, you can put clock time stops in there and don&#039;t require any fancy configuration.  
At a certain point you do have to pull out a real debugger to see what is going on.  This often
happens when your one-liners are no longer good enough and now you have to write 20 liners of plpgsql code.&lt;/p&gt;

&lt;p&gt;Such is the case with geocoding and the &lt;a href=&quot;http://www.postgis.org/documentation/manual-svn/Extras.html#Tiger_Geocoder&quot; target=&quot;_blank&quot;&gt;PostGIS tiger geocoder&lt;/a&gt; specifically.  Lots of interest has revived
on that with people submitting bug reports and we&#039;ve got paying clients in need of a fairly easy and speedy drop-in geocoder
that can be molded to handle such things as road way locations, badly mis-spelled real estate data, or just simply
to get rid of their dependency on Google, Yahoo, MapQuest, ESRI and other online or pricey geocoding tools.
So I thought I&#039;d take this opportunity to supplement our old-fashioned debugging with plpgsqldebugger goodness.
In this article, we&#039;ll show you how to configure the plpgsql debugger integrated in PgAdmin and run with it.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/214-Using-PgAdmin-PLPgSQL-Debugger.html#extended&quot;&gt;Continue reading &quot;Using PgAdmin PLPgSQL Debugger&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 27 Jun 2011 01:49:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/214-guid.html</guid>
    <category>debugging</category>
<category>pgadmin</category>

</item>
<item>
    <title>PostgreSQL 9.1 Trigrams teaching LIKE and ILIKE new tricks</title>
    <link>http://www.postgresonline.com/journal/archives/212-PostgreSQL-9.1-Trigrams-teaching-LIKE-and-ILIKE-new-tricks.html</link>
            <category>9.1</category>
            <category>basics</category>
            <category>contrib spotlight</category>
            <category>intermediate</category>
            <category>pgtrgm</category>
            <category>postgresql versions</category>
    
    <comments>http://www.postgresonline.com/journal/archives/212-PostgreSQL-9.1-Trigrams-teaching-LIKE-and-ILIKE-new-tricks.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=212</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=212</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;There once existed programmers who were asked to explain this snippet of code: &lt;code&gt;1 + 2&lt;/code&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The C programmer explained &amp;quot;It&#039;s a common mathematical expression.&amp;quot;&lt;/li&gt;
    &lt;li&gt;The C++, Java, C# and other impure object-oriented programmers said &amp;quot;We concur.  It&#039;s a common mathematical expression.&amp;quot;&lt;/li&gt;
    &lt;li&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/Smalltalk&quot; target=&quot;_blank&quot;&gt;Smalltalk&lt;/a&gt; programmer explained &amp;quot;1 adds 2.&amp;quot;&lt;/li&gt;
    &lt;li&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/Lisp_(programming_language)&quot; target=&quot;_blank&quot;&gt;Lisp&lt;/a&gt; programmer stood up, a bit in disgust, and said, &amp;quot;No no! You are doing it all wrong!&amp;quot;&lt;br /&gt; The Lisp Programmer then pulled out
        a &lt;a href=&quot;http://en.wikipedia.org/wiki/Polish_notation&quot; target=&quot;_blank&quot;&gt;Polish calculator&lt;/a&gt;, punched in &lt;code&gt;+ 1 2&lt;/code&gt;
        ,and with a very serious face, explained &lt;br /&gt; &amp;quot;+ should be pushing those other two around.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I find this episode interesting because while the Lisp programmer I feel is more right, the Smalltalk programmer has managed to follow the rest of the crowd and still stick 
to her core principle. This brings us to what does this have to do with &lt;a href=&quot;http://www.postgresonline.com/journal/archives/169-Fuzzy-string-matching-with-Trigram-and-Trigraphs.html&quot; target=&quot;_blank&quot;&gt;trigrams&lt;/a&gt; 
in PostgreSQL 9.1.  Well just like &lt;code&gt;1 + 2&lt;/code&gt; being a common mathematical expression, &lt;code&gt;abc LIKE &#039;%b%&#039;&lt;/code&gt; is a common logical relational database expression that we have long taken for granted as not an indexable operation in most
databases (not any other database to I can think of) until PostgreSQL 9.1, which can utilize trigram indices (the Lisp programmer behind the curtain) to make it fast.&lt;/p&gt;


&lt;p&gt;There are 2 main enhancements happening with &lt;a href=&quot;http://www.postgresonline.com/journal/archives/169-Fuzzy-string-matching-with-Trigram-and-Trigraphs.html&quot; target=&quot;_blank&quot;&gt;trigrams&lt;/a&gt; in PostgreSQL 9.1
both of which depesz has already touched on in &lt;a href=&quot;http://www.depesz.com/index.php/2011/02/19/waiting-for-9-1-faster-likeilike/&quot; target=&quot;_blank&quot;&gt;FASTER LIKE/ILIKE&lt;/a&gt;
and &lt;a href=&quot;http://www.depesz.com/index.php/2010/12/11/waiting-for-9-1-knngist/&quot; target=&quot;_blank&quot;&gt;KNNGIST&lt;/a&gt;.  This means you can have an even faster trigram search than you ever
have had before and you can do it in such a fashion that doesn&#039;t require any PostgreSQL trigram specific syntactical expressions.  So while PostgreSQL 9.1 might be understanding LIKE much like all the other databases
you work with, if you have a trigram index in place, it will just be doing it a little faster and sometimes a lot faster using the more clever PostgreSQL 9.1 planner.   
This is one example of how you can use applications designed for many databases and still be able to utilize advanced features in
your database of choice. In this article we&#039;ll demonstrate.&lt;/p&gt;

&lt;p&gt;For this example we&#039;ll use a table of 490,000 someodd records consisting of Massachusetts street segments and their names excerpted from &lt;a href=&quot;http://www.census.gov/geo/www/tiger/tgrshp2010/tgrshp2010.html&quot; target=&quot;_blank&quot;&gt;TIGER 2010&lt;/a&gt; data. You can
download the trimmed data set from &lt;a href=&quot;/downloads/featnames_short.zip&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; if you want to play along.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/212-PostgreSQL-9.1-Trigrams-teaching-LIKE-and-ILIKE-new-tricks.html#extended&quot;&gt;Continue reading &quot;PostgreSQL 9.1 Trigrams teaching LIKE and ILIKE new tricks&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 06 Jun 2011 01:23:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/212-guid.html</guid>
    <category>mysql</category>
<category>postgresql 9.1</category>
<category>sql server</category>
<category>trigram</category>
<category>trigraph</category>

</item>
<item>
    <title>Navigating PostgreSQL 9.1 beta 1 with PgAdmin III 1.14.0 Beta 1</title>
    <link>http://www.postgresonline.com/journal/archives/206-Navigating-PostgreSQL-9.1-beta-1-with-PgAdmin-III-1.14.0-Beta-1.html</link>
            <category>9.1</category>
            <category>basics</category>
            <category>beginner</category>
            <category>pgadmin</category>
            <category>postgis</category>
    
    <comments>http://www.postgresonline.com/journal/archives/206-Navigating-PostgreSQL-9.1-beta-1-with-PgAdmin-III-1.14.0-Beta-1.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=206</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=206</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;We&#039;ve started to play with PostgreSQL 9.1beta and the PgAdmin III 1.14.0 Beta 1.  We&#039;ll briefly go over the cool gems 
found in PgAdmin III beta 1.  Most of the new features are for navigating the upcoming PostgreSQL 9.1.  Well first obstacle we ran into
was we can&#039;t get our favorite extension, PostGIS, to compile against PostgreSQL 9.1beta though it did with the alphas, so you won&#039;t be seeing any windows experimental builds until we resolve this issue.
Details of ticket here? &lt;a href=&quot;http://trac.osgeo.org/postgis/ticket/940&quot; target=&quot;_blank&quot;&gt;PostGIS 2.0 won&#039;t compile for  PostgreSQL 9.1 beta1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Despite that minor set back, we decided to push on and navigate the new features by using PgAdmin III 1.14.0 as our Tour Guide. Below is a list of new features you can experience
via PgAdmin III 1.14.0 Beta 1.  I&#039;m sure there are more we missed, but these are the ones that were most flashing.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/206-Navigating-PostgreSQL-9.1-beta-1-with-PgAdmin-III-1.14.0-Beta-1.html#extended&quot;&gt;Continue reading &quot;Navigating PostgreSQL 9.1 beta 1 with PgAdmin III 1.14.0 Beta 1&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 06 May 2011 23:45:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/206-guid.html</guid>
    <category>pgadmin</category>
<category>postgresql 9.1</category>
<category>sql med</category>

</item>
<item>
    <title>Using Domains to Enforce Business Rules</title>
    <link>http://www.postgresonline.com/journal/archives/205-Using-Domains-to-Enforce-Business-Rules.html</link>
            <category>advanced</category>
            <category>basics</category>
            <category>db2</category>
            <category>firebird</category>
            <category>gis</category>
            <category>oracle</category>
            <category>postgis</category>
            <category>sql server</category>
    
    <comments>http://www.postgresonline.com/journal/archives/205-Using-Domains-to-Enforce-Business-Rules.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=205</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=205</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;We like to enforce business rules at the database level wherever
we can, for the simple reason, particularly the business we are in,  most database update happens 
outside the end-user application layer.
That is not to say you shouldn&#039;t enforce at the application level too, but that the database is the last
line of defense, is usually more self-documenting than application code can be, and also protects you from your
programmers, even when that &lt;em&gt;your programmers&lt;/em&gt; is &lt;b&gt;you&lt;/b&gt;. 
&lt;a href=&quot;http://www.postgresql.org/docs/current/interactive/sql-createdomain.html&quot; target=&quot;_blank&quot;&gt;Domains&lt;/a&gt; are objects that you will find in many high-end
standards-compliant databases.  They exist in SQL Server, Oracle, IBM Db2, Firebird, and PostgreSQL to name a few. 
Domains have existed for a really long time in PostgreSQL. In &lt;a href=&quot;http://www.postgis.org/documentation/manual-svn/Topology.html&quot; target=&quot;_blank&quot;&gt;PostGIS topology&lt;/a&gt;, &lt;a href=&quot;http://www.linkedin.com/pub/sandro-santilli/b/947/488&quot; target=&quot;_blank&quot;&gt;Sandro Santilli (usually known as strk)&lt;/a&gt;, takes advantage of them for fleshing out the topology support, and I got turned on to them by him.
With that said - let&#039;s dive into domains.&lt;/p&gt;


&lt;h4&gt;What are domains?&lt;/h4&gt;
&lt;p&gt;Domains are essentially a reusable packaging of check constraints.  You use them as if they were a custom data type.  
The nice thing about them is that they are usually transparent to applications that 
don&#039;t understand them. &lt;/p&gt;

&lt;h4&gt;Example 1: Enforce pay ending/pay day happens only on certain days of the week&lt;/h4&gt;
&lt;p&gt;Here is an example -- suppose you had a payment system, and you had a rule that the pay thru end date has to
fall on a Friday.  You could create a domain such as the following:&lt;/p&gt;

&lt;pre&gt;&lt;span class=&quot;syntax0&quot;&gt;&lt;span class=&quot;syntax-COMMENT1&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;syntax-COMMENT1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;syntax-COMMENT1&quot;&gt;payday&lt;/span&gt;&lt;span class=&quot;syntax-COMMENT1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;syntax-COMMENT1&quot;&gt;domain&lt;/span&gt;
&lt;span class=&quot;syntax-KEYWORD1&quot;&gt;CREATE&lt;/span&gt; DOMAIN dom_payday
  &lt;span class=&quot;syntax-KEYWORD1&quot;&gt;AS&lt;/span&gt; date
   &lt;span class=&quot;syntax-KEYWORD1&quot;&gt;CONSTRAINT&lt;/span&gt; check_dow &lt;span class=&quot;syntax-KEYWORD1&quot;&gt;CHECK&lt;/span&gt; &lt;span class=&quot;syntax-OPERATOR&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;syntax-FUNCTION&quot;&gt;trim(to_char&lt;/span&gt;&lt;span class=&quot;syntax-OPERATOR&quot;&gt;(&lt;/span&gt;VALUE, &lt;span class=&quot;syntax-LITERAL1&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;day&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;syntax-OPERATOR&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;syntax-OPERATOR&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;syntax-LITERAL1&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;friday&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;syntax-OPERATOR&quot;&gt;)&lt;/span&gt;; 
COMMENT &lt;span class=&quot;syntax-KEYWORD1&quot;&gt;ON&lt;/span&gt; DOMAIN dom_payday &lt;span class=&quot;syntax-KEYWORD1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;syntax-LITERAL1&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;Company&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;payday&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;rules&lt;/span&gt;&lt;span class=&quot;syntax-LITERAL1&quot;&gt;&#039;&lt;/span&gt;;
&lt;/span&gt;&lt;/pre&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/205-Using-Domains-to-Enforce-Business-Rules.html#extended&quot;&gt;Continue reading &quot;Using Domains to Enforce Business Rules&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 30 Apr 2011 23:48:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/205-guid.html</guid>
    <category>business rules</category>
<category>constraints</category>
<category>domain</category>
<category>postgis</category>
<category>x3d</category>

</item>
<item>
    <title>An Almost Idiot's Guide to Installing  PostGIS 1.5 on PostgreSQL 9.0 via Yum</title>
    <link>http://www.postgresonline.com/journal/archives/204-An-Almost-Idiots-Guide-to-Installing-PostGIS-1.5-on-PostgreSQL-9.0-via-Yum.html</link>
            <category>9.0</category>
            <category>basics</category>
            <category>beginner</category>
            <category>postgis</category>
            <category>postgresql versions</category>
            <category>yum</category>
    
    <comments>http://www.postgresonline.com/journal/archives/204-An-Almost-Idiots-Guide-to-Installing-PostGIS-1.5-on-PostgreSQL-9.0-via-Yum.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=204</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=204</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;In the past I have always chosen to compile my own PostGIS  because the GEOS library that came with the regular PostgreSQL yum install, was a bit antiquated. 
This has changed, so this time around I figured I&#039;d give it a go at using the Yum repository 1.5.2 release of PostGIS available via &lt;a href=&quot;http://www.pgrpms.org/news-packagelist.php&quot; target=&quot;_blank&quot;&gt;Yum Package List&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Before you can follow these directions, make sure you have your PostgreSQL 9.0 setup via our &lt;a href=&quot;http://www.postgresonline.com/journal/archives/203-postgresql90-yum.html&quot; target=&quot;_blank&quot;&gt;An almost idiot&#039;s guide to Install PostgreSQL 9.0 with Yum&lt;/a&gt;.&lt;/p&gt;

&lt;div style=&#039;background-color:yellow&#039;&gt;&lt;a href=&quot;http://www.amazon.com/PostGIS-Action-Regina-Obe/dp/1935182269?&amp;camp=213293&amp;linkCode=wey&amp;tag=postgisus-20&amp;creative=388373&quot; target=&quot;_blank&quot;&gt;PostGIS in Action&lt;/a&gt; has started shipping from Amazon and we already have 3 positive reviews.  We are hoping to write another book sometime soon, but haven&#039;t decided yet on the topic.  Will definitely have something to do with databases and probably a lot of PostgreSQL in it.&lt;/div&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/204-An-Almost-Idiots-Guide-to-Installing-PostGIS-1.5-on-PostgreSQL-9.0-via-Yum.html#extended&quot;&gt;Continue reading &quot;An Almost Idiot&#039;s Guide to Installing  PostGIS 1.5 on PostgreSQL 9.0 via Yum&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 21 Apr 2011 02:02:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/204-guid.html</guid>
    <category>postgis</category>
<category>postgresql 9.0</category>
<category>yum</category>

</item>
<item>
    <title>An almost idiot's guide to Install PostgreSQL 9.0 with Yum</title>
    <link>http://www.postgresonline.com/journal/archives/203-An-almost-idiots-guide-to-Install-PostgreSQL-9.0-with-Yum.html</link>
            <category>9.0</category>
            <category>basics</category>
            <category>beginner</category>
            <category>postgresql versions</category>
            <category>yum</category>
    
    <comments>http://www.postgresonline.com/journal/archives/203-An-almost-idiots-guide-to-Install-PostgreSQL-9.0-with-Yum.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=203</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=203</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;In this exercise, we&#039;ll go thru installing PostgreSQL 9.0 on a Cent OS 5.5 32-bit box. This I&#039;m testing on a GoGrid Cloud server so I can do parallel benchmarks between my windows GoGrid
and Linux GoGrid server.&lt;/p&gt;

&lt;h4&gt;Upgrading from PostgreSQL 8.* to PostgreSQL 9.0&lt;/h4&gt;
&lt;p&gt;If you are upgrading from a PostgreSQL 8.4 to PostgreSQL 9.0, please refer to Devrim&#039;s article: 
&lt;a href=&quot;http://people.planetpostgresql.org/devrim/index.php?/archives/50-Upgrading-from-8.4-to-9.0-on-Fedora-Red-Hat-CentOS-using-RPMs.html&quot; target=&quot;_blank&quot;&gt;Upgrading from 8.4 to 9.0 on Fedora / Red Hat / CentOS using RPMs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the rest of this article, we&#039;ll go over configuring your yum to use the PostgreSQL PGDG Yum repository managed by Devrim Gunduz, which has the latest and greatest of 
9.0 as well as the 9.1 latest development release. We&#039;ll also demonstrate how to have two instances of PostgreSQL running so you can experiment with the new features of
PostgreSQL 9.1 while reminiscing about the soon to be old-hat features of PostgreSQL 9.0.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/203-An-almost-idiots-guide-to-Install-PostgreSQL-9.0-with-Yum.html#extended&quot;&gt;Continue reading &quot;An almost idiot&#039;s guide to Install PostgreSQL 9.0 with Yum&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 18 Apr 2011 04:32:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/203-guid.html</guid>
    <category>yum cloud</category>

</item>
<item>
    <title>SQL Server 64-bit Linked Server woes</title>
    <link>http://www.postgresonline.com/journal/archives/196-SQL-Server-64-bit-Linked-Server-woes.html</link>
            <category>9.0</category>
            <category>basics</category>
            <category>beginner</category>
            <category>sql server</category>
    
    <comments>http://www.postgresonline.com/journal/archives/196-SQL-Server-64-bit-Linked-Server-woes.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=196</wfw:comment>

    <slash:comments>11</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;We were setting up another SQL Server 2005 64-bit where we needed a linked server connection to our PostgreSQL 9.0 server.  This is something we&#039;ve done before so not new and something we documented in  
&lt;a href=&quot;http://www.postgresonline.com/journal/archives/46-Setting-up-PostgreSQL-as-a-Linked-Server-in-Microsoft-SQL-Server-64-bit.html&quot; target=&quot;_blank&quot;&gt;Setting up PostgreSQL as a Linked Server in Microsoft SQL Server 64-bit&lt;/a&gt;.
What was different this time is that we decided to use the latest version of the new PostgreSQL 64-bit drivers now available main PostgreSQL site &lt;a href=&quot;http://www.postgresql.org/ftp/odbc/versions/msi/&quot; target=&quot;_blank&quot;&gt;http://www.postgresql.org/ftp/odbc/versions/msi/&lt;/a&gt;. 
Sadly these did not work for us.  They seemed to work fine in our MS Access 2010 64-bit install, but when used via SQL Server, SQL Server would choke with a message:&lt;/p&gt;

&lt;span style=&quot;color:red&quot;&gt;Msg 7350, Level 16, State 2, Line 1&lt;br /&gt;Cannot get the column information from OLE DB provider &quot;MSDASQL&quot;&lt;/span&gt; 
&lt;p&gt;If you tried to do a query with them.  You can however see all the tables via the linked server tab.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/196-SQL-Server-64-bit-Linked-Server-woes.html#extended&quot;&gt;Continue reading &quot;SQL Server 64-bit Linked Server woes&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 21 Feb 2011 19:10:00 -0500</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/196-guid.html</guid>
    <category>sql server</category>

</item>
<item>
    <title>pgAdmin pgScript</title>
    <link>http://www.postgresonline.com/journal/archives/181-pgAdmin-pgScript.html</link>
            <category>basics</category>
            <category>intermediate</category>
            <category>pgadmin</category>
            <category>postgis</category>
            <category>sql server</category>
    
    <comments>http://www.postgresonline.com/journal/archives/181-pgAdmin-pgScript.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=181</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=181</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;pgAdmin has this feature called a pgScript.  Its a very simple scripting language for running
tasks in a pgAdmin SQL window. The documentation is &lt;a href=&quot;http://www.pgadmin.org/docs/dev/pgscript.html&quot; target=&quot;_blank&quot;&gt;PgScript manual&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Why would you use it over say writing a plpgsql function?&lt;/h4&gt;
&lt;p&gt;One main reason we use it is to run quick ad-hoc batch jobs such as geocoding addresses and so forth.  The
benefit it has over running a stored function is that you don&#039;t have to run it as a single transaction.&lt;/p&gt;
&lt;p&gt;This is important for certain kinds of tasks where you just want to run something in a loop and have each loop commit
separately. To us the syntax with the @ resembles SQL Server Transact-SQL more than it does any PostgreSQL language. WhenI first
saw pgScript I thought &lt;em&gt;Wow PgAdmin talks Transact-SQL; now -- what will they think of next :)&lt;/em&gt;.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/181-pgAdmin-pgScript.html#extended&quot;&gt;Continue reading &quot;pgAdmin pgScript&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 29 Oct 2010 03:52:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/181-guid.html</guid>
    <category>geocoding</category>
<category>pgadmin</category>
<category>postgis</category>

</item>
<item>
    <title>PgAdmin III 1.13 - change in plugin architecture and PostGIS Plugins</title>
    <link>http://www.postgresonline.com/journal/archives/180-PgAdmin-III-1.13-change-in-plugin-architecture-and-PostGIS-Plugins.html</link>
            <category>9.1</category>
            <category>basics</category>
            <category>beginner</category>
            <category>gis</category>
            <category>oracle</category>
            <category>pgadmin</category>
            <category>postgis</category>
    
    <comments>http://www.postgresonline.com/journal/archives/180-PgAdmin-III-1.13-change-in-plugin-architecture-and-PostGIS-Plugins.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=180</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=180</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;One of the neat changes already present in the PgAdmin III 1.13dev, is the change in plugin architecture.  Version 1.13 dev allows for multiple plugin*.ini files. How does this work.
Well if you have a plugins.d folder in your PgAdmin III version folder, it will read all the inis in that folder and load them as plugins.&lt;/p&gt;

&lt;p&gt;Recall in &lt;a href=&quot;http://www.postgresonline.com/journal/archives/145-PgAdmin-III-Plug-in-Registration-PostGIS-Shapefile-and-DBF-Loader.html&quot; target=&quot;_blank&quot;&gt;PgAdmin III Plug-in Registration: PostGIS Shapefile and DBF Loader&lt;/a&gt;,
we demonstrated how to load the PostGIS shapefile and dbf loader as a plugin in PgAdmin III, well this time we will demonstrate how to do it using PgAdmin version 1.13. Better yet, we&#039;ll show you the new and improved
PgAdmin III Shapefile and DBF Loader in the works for PostGIS 2.0.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/180-PgAdmin-III-1.13-change-in-plugin-architecture-and-PostGIS-Plugins.html#extended&quot;&gt;Continue reading &quot;PgAdmin III 1.13 - change in plugin architecture and PostGIS Plugins&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 11 Oct 2010 03:16:31 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/180-guid.html</guid>
    <category>pgadmin</category>
<category>postgis</category>

</item>
<item>
    <title>Explain Plans PostgreSQL 9.0 Text, JSON, XML, YAML - Part 1: You Choose</title>
    <link>http://www.postgresonline.com/journal/archives/171-Explain-Plans-PostgreSQL-9.0-Text,-JSON,-XML,-YAML-Part-1-You-Choose.html</link>
            <category>9.0</category>
            <category>basics</category>
            <category>beginner</category>
            <category>gis</category>
            <category>hstore</category>
            <category>pgadmin</category>
            <category>postgis</category>
    
    <comments>http://www.postgresonline.com/journal/archives/171-Explain-Plans-PostgreSQL-9.0-Text,-JSON,-XML,-YAML-Part-1-You-Choose.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=171</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=171</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;One of the new features of PostgreSQL 9.0 is the ability to specify the format of an explain plan.
In prior versions your only choice was text (and graphic explain with tools like PgAdmin III and other GUIS), but in 9.0 on, you have the additional options of
Javascript Object Notation (JSON) which &lt;a href=&quot;http://lin-ear-th-inking.blogspot.com/2010/07/is-json-csv-of-21st-century.html&quot; target=&quot;_blank&quot;&gt;some people have a thing or two to say about them&lt;/a&gt;,  YAML Ain&#039;t Markup Language (YAML) or eXtended Markup Language (XML). The new explain options are itemized in &lt;a href=&quot;http://www.postgresql.org/docs/9.0/static/sql-explain.html&quot; target=&quot;_blank&quot;&gt;PostgreSQL 9.0 EXPLAIN&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;The main benefit of the JSON, XML, YAML formats is that they are easier
to machine parse than the default text version. This will allow for creative renderings of planner trees with minimal coding.&lt;/p&gt;

&lt;p&gt;In Part 1 of this series, we&#039;ll demonstrate how to output the plans in these various formats and what they look like.
In later parts of this series -- we&#039;ll demonstrate how to use Javascript, XSL and other scripting/markup languages
to transform these into works of art you can hang on your wall.&lt;/p&gt;

-- START POSTGIS IN ACTION ASIDE --
&lt;p&gt;We just submitted the third major revision of &lt;a href=&quot;http://www.postgis.us/chapter_03&quot; target=&quot;_blank&quot;&gt;Chapter 3 Data Modeling&lt;/a&gt;
of our upcoming &lt;a href=&quot;http://www.postgis.us&quot; target=&quot;_blank&quot;&gt;PostGIS in Action&lt;/a&gt; book. 
The second major revision we never submitted and threw it out because it wasn&#039;t worldly enough and was too involved. We may
use it later on for an example.
Chapter 3 should be up on Manning Early Access Program (MEAP) soon. If you haven&#039;t bought the book yet &lt;a href=&quot;http://www.postgis.us/page_buy_book&quot;&gt;Buy now&lt;/a&gt;.
You don&#039;t want to miss out on a major masterpiece in the making. Okay we exaggerate a bit.&lt;/p&gt;
-- END POSTGIS IN ACTION ASIDE -- &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/171-Explain-Plans-PostgreSQL-9.0-Text,-JSON,-XML,-YAML-Part-1-You-Choose.html#extended&quot;&gt;Continue reading &quot;Explain Plans PostgreSQL 9.0 Text, JSON, XML, YAML - Part 1: You Choose&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 29 Jul 2010 17:58:03 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/171-guid.html</guid>
    <category>book writing</category>
<category>explain plan</category>
<category>jquery</category>
<category>json</category>
<category>pgadmin</category>
<category>postgis</category>
<category>postgresql 9.0</category>
<category>xml</category>
<category>xslt</category>
<category>yaml</category>

</item>
<item>
    <title>What is new in PgAdmin III 1.12.0</title>
    <link>http://www.postgresonline.com/journal/archives/168-What-is-new-in-PgAdmin-III-1.12.0.html</link>
            <category>9.0</category>
            <category>basics</category>
            <category>beginner</category>
            <category>pgadmin</category>
            <category>postgresql versions</category>
    
    <comments>http://www.postgresonline.com/journal/archives/168-What-is-new-in-PgAdmin-III-1.12.0.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=168</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=168</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;Gathering from the number of hits we got from our &lt;a href=&quot;http://www.postgresonline.com/journal/archives/164-What-is-new-in-PostgreSQL-9.0.html&quot; target=&quot;_blank&quot;&gt;What&#039;s new in PostgreSQL 9.0&lt;/a&gt;,
and the large number of &lt;a href=&quot;http://developers.slashdot.org/story/10/06/09/1612246/What-Is-New-In-PostgreSQL-90&quot; target=&quot;_blank&quot;&gt;slashdot&lt;/a&gt; responses we got
as well as the fair number of &lt;a href=&quot;http://www.reddit.com/r/programming/comments/ccyqh/what_is_new_in_postgresql_90/&quot; target=&quot;_blank&quot;&gt;reddit responses&lt;/a&gt;,
I guess a lot of people are really excited about the upcoming PostgreSQL 9.0 or at least 
have a lot of opinions about what is still missing in it.&lt;/p&gt;

&lt;p&gt;For this discussion, we would like to point out one of the companion adminstration tools that
will be packaged in with PostgreSQL 9.0 (and currently packaged in beta 2).  This is PgAdmin III, which
we will affectionately refer to as &lt;em&gt;the Administrative tool for mere mortals&lt;/em&gt;.  It is the first administrative
tool that most users new to PostgreSQL use and gives them a user-friendly interface to the
power behind PostgreSQL.  I would say if it were not for this tool and its web cousin &lt;a href=&quot;http://phppgadmin.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;PhpPgAdmin&lt;/a&gt;, many 
a scared newbie user would be running away at the vast unencumbered freedom that PostgreSQL/psql and sibling commandline tools  offer.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/168-What-is-new-in-PgAdmin-III-1.12.0.html#extended&quot;&gt;Continue reading &quot;What is new in PgAdmin III 1.12.0&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 05 Jul 2010 03:19:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/168-guid.html</guid>
    <category>pgadmin</category>

</item>
<item>
    <title>NOT IN NULL Uniqueness trickery</title>
    <link>http://www.postgresonline.com/journal/archives/166-NOT-IN-NULL-Uniqueness-trickery.html</link>
            <category>basics</category>
            <category>beginner</category>
            <category>postgresql versions</category>
            <category>sql server</category>
    
    <comments>http://www.postgresonline.com/journal/archives/166-NOT-IN-NULL-Uniqueness-trickery.html#comments</comments>
    <wfw:comment>http://www.postgresonline.com/journal/wfwcomment.php?cid=166</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.postgresonline.com/journal/rss.php?version=2.0&amp;type=comments&amp;cid=166</wfw:commentRss>
    

    <author>nospam@example.com (Leo Hsu and Regina Obe)</author>
    <content:encoded>
    &lt;p&gt;I know a lot has been said about this beautiful value we affectionately call &lt;a href=&quot;http://en.wikipedia.org/wiki/Null_%28SQL%29&quot; target=&quot;_blank&quot;&gt;NULL&lt;/a&gt;, which is neither here nor there and that manages to catch many of us 
off guard with its casual neither here nor thereness.  Database analysts who are really just back seat mathematicians in disguise like to &lt;a href=&quot;http://sqlblog.com/blogs/hugo_kornelis/archive/2007/09/30/what-if-null-if-null-is-null-null-null-is-null.aspx&quot; target=&quot;_blank&quot;&gt;philosophize&lt;/a&gt;
about the unknown and pat themselves on the back when they feel they have mastered the unknown better than any one else.  Of course database spatial analysts, the worst kind of back seat mathematicians, 
like to talk not only about NULL but about &lt;a href=&quot;http://trac.osgeo.org/postgis/wiki/DevWikiEmptyGeometry&quot; target=&quot;_blank&quot;&gt;EMPTY and compare notes with their brethren&lt;/a&gt; and &lt;a href=&quot;http://blog.cleverelephant.ca/2010/03/nothing-nada-zip-bupkus.html&quot; target=&quot;_blank&quot;&gt;write dissertations&lt;/a&gt;
about what to do about something that is neither here nor there
but is more known than the unknown, but not quite as known as the empty string.&lt;/p&gt;

&lt;p&gt;Okay getting to the point, one of our clients asked us about a peculiar problem they had with a query, and the strange results they were getting.  We admit this still manages to catch us off guard every once in a while.&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/archives/166-NOT-IN-NULL-Uniqueness-trickery.html#extended&quot;&gt;Continue reading &quot;NOT IN NULL Uniqueness trickery&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 22 Jun 2010 04:19:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.postgresonline.com/journal/archives/166-guid.html</guid>
    <category>ansi sql</category>
<category>null</category>

</item>

</channel>
</rss>
