<?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>Full Table Scan - Portability</title>
    <link>http://www.fulltablescan.com/</link>
    <description>The fix for the database junkie in you</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:admin@fulltablescan.com" />
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <managingEditor>spam-me-not-tom@fulltablescan.com</managingEditor>
<pubDate>Mon, 19 Nov 2007 19:04:33 GMT</pubDate>

    <image>
        <url>http://www.fulltablescan.com/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Full Table Scan - Portability - The fix for the database junkie in you</title>
        <link>http://www.fulltablescan.com/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Standards Are Frameworks, Not Instructions</title>
    <link>http://www.fulltablescan.com/index.php?/archives/23-Standards-Are-Frameworks,-Not-Instructions.html</link>
            <category>Portability</category>
    
    <comments>http://www.fulltablescan.com/index.php?/archives/23-Standards-Are-Frameworks,-Not-Instructions.html#comments</comments>
    <wfw:comment>http://www.fulltablescan.com/wfwcomment.php?cid=23</wfw:comment>

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

    <author>tom@fulltablescan.com (Tom)</author>
    <content:encoded>
       Every so often, somebody asks me: &quot;Why is it so much work to add support for Database X?  They support SQL and ODBC!&quot;&lt;br /&gt;
&lt;br /&gt;
   My response usually takes about 20 minutes.  The first 18 minutes are comprised solely of me standing with my feet shoulder-width apart, back slightly bowed, arms raised and fists clenched, face turned skyward, screaming a single unbroken roar of sheer frustration and unbridled hatred.  I then spend the last two minutes explaining the following answer: standards are frameworks for communication, not instructions for execution.&lt;br /&gt;
&lt;br /&gt;
   SQL and ODBC (and JDBC, etc. etc. etc.) define ways for two systems to communicate with each other.  They do &lt;em&gt;NOT&lt;/em&gt; define how either party in the conversation should actually behave.  Thus, a system that understands SQL or ODBC is not necessarily going to behave the way you want it to.  Heck, it might not even understand what you&#039;re asking of it.&lt;br /&gt;
&lt;br /&gt;
   To re-use an old example, consider the case sensitivity problems I&#039;ve described in &lt;a href=&quot;http://www.fulltablescan.com/index.php?/archives/5-Databases-Are-Sensitive...-or-Not...-Sometimes....html&quot;  title=&quot;http://www.fulltablescan.com/index.php?/archives/5-Databases-Are-Sensitive...-or-Not...-Sometimes....html&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;http://www.fulltablescan.com/index.php?/categories/5-SQL-Server&quot;  title=&quot;http://www.fulltablescan.com/index.php?/categories/5-SQL-Server&quot;&gt;posts&lt;/a&gt;.  SQL Server understands SQL and ODBC, but as those examples show, it isn&#039;t necessarily going to execute your query the way you want it to.  And that problem can arise just between two different installs of the same RDBMS - imagine the problems trying to move to an entirely different system!&lt;br /&gt;
&lt;br /&gt;
   Let me close with a fun little analogy:&lt;br /&gt;
&lt;br /&gt;
   &lt;em&gt;ODBC is to SQL as ears are to English&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
   All humans (or almost all, anyway) have ears.  Americans and Australians both &quot;speak English&quot;.  But would you expect an American to be able to communicate perfectly with an Australian?  They might be able to figure things out, but it wouldn&#039;t happen perfectly the first time.  They both share common frameworks for communication, but not all the words mean the same thing. 
    </content:encoded>

    <pubDate>Mon, 19 Nov 2007 06:33:00 -0500</pubDate>
    <guid isPermaLink="false">http://www.fulltablescan.com/index.php?/archives/23-guid.html</guid>
    
</item>
<item>
    <title>Updating One Table from Another</title>
    <link>http://www.fulltablescan.com/index.php?/archives/7-Updating-One-Table-from-Another.html</link>
            <category>Portability</category>
    
    <comments>http://www.fulltablescan.com/index.php?/archives/7-Updating-One-Table-from-Another.html#comments</comments>
    <wfw:comment>http://www.fulltablescan.com/wfwcomment.php?cid=7</wfw:comment>

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

    <author>tom@fulltablescan.com (Tom)</author>
    <content:encoded>
    Twice in the last few weeks I&#039;ve been faced with the problem of updating one table with values from another.  I admittedly don&#039;t do this very often, but given that tables are the central objects in a database I would have thought that this would be easier to do.  But, like so many database things, the SQL required turns out to be both unintuitive and database-specific.&lt;br /&gt;
&lt;br /&gt;
So, after surveying a half-dozen or so databases, here&#039;s what I came up with.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.fulltablescan.com/index.php?/archives/7-Updating-One-Table-from-Another.html#extended&quot;&gt;Continue reading &quot;Updating One Table from Another&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 11 May 2007 14:05:29 -0400</pubDate>
    <guid isPermaLink="false">http://www.fulltablescan.com/index.php?/archives/7-guid.html</guid>
    
</item>
<item>
    <title>Databases Are Sensitive... or Not... Sometimes...</title>
    <link>http://www.fulltablescan.com/index.php?/archives/5-Databases-Are-Sensitive...-or-Not...-Sometimes....html</link>
            <category>Portability</category>
    
    <comments>http://www.fulltablescan.com/index.php?/archives/5-Databases-Are-Sensitive...-or-Not...-Sometimes....html#comments</comments>
    <wfw:comment>http://www.fulltablescan.com/wfwcomment.php?cid=5</wfw:comment>

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

    <author>tom@fulltablescan.com (Tom)</author>
    <content:encoded>
       Case sensitivity of object names appears to be a pretty thorny issue for some databases (see &lt;a href=&quot;http://www.fulltablescan.com/index.php?/archives/3-Beware-Quoted-Identifiers.html&quot;  title=&quot;Beware Quoted Identifiers&quot;&gt;Beware Quoted Identifiers&lt;/a&gt;).  Object names in Microsoft SQL Server, for example, may or may not be case sensitive, depending on the collation chosen for the database (or, in pre-SQL2005, the collation chosen for the entire database instance).&lt;br /&gt;
&lt;br /&gt;
   Assume you create a table as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;   CREATE TABLE foo(x varchar(10))&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
   Now consider the following queries:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;   SELECT * FROM foo&lt;br /&gt;
   SELECT * FROM Foo&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
   Whether one or both of these queries will succeed will depend on &lt;em&gt;the collation setting for the database to which you&#039;re connected&lt;/em&gt;.  For application developers, this can be a nightmare; requiring that the SQL Server database be either case-sensitive or case-insensitive would seem to be the only way to ensure that an application can function predictably.&lt;br /&gt;
&lt;br /&gt;
   As if that weren&#039;t unpredictable enough: MySQL goes one better and makes table name case sensitivity dependent on the &lt;em&gt;operating system&lt;/em&gt;.  If your MySQL server is running on Linux or Unix, your table names will be case sensitive.  If it&#039;s running on Windows, they&#039;ll be case-insensitive.  Index and other object names will always be case-sensitive, however.&lt;br /&gt;
&lt;br /&gt;
   Go figure. 
    </content:encoded>

    <pubDate>Wed, 09 May 2007 09:49:45 -0400</pubDate>
    <guid isPermaLink="false">http://www.fulltablescan.com/index.php?/archives/5-guid.html</guid>
    
</item>

</channel>
</rss>