<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xaprb &#187; SQL</title>
	<atom:link href="http://www.xaprb.com/blog/category/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xaprb.com/blog</link>
	<description>Stay curious!</description>
	<lastBuildDate>Mon, 23 Aug 2010 23:00:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What are your favorite MySQL bug reports?</title>
		<link>http://www.xaprb.com/blog/2010/08/23/what-are-your-favorite-mysql-bug-reports/</link>
		<comments>http://www.xaprb.com/blog/2010/08/23/what-are-your-favorite-mysql-bug-reports/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 23:00:51 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1988</guid>
		<description><![CDATA[Bug reports can be fun.  They can also be terrible.  Either way they can be entertaining.  On the Drizzle IRC channel today I saw a couple references to MySQL bug reports:  it is stop working and Does not make toast (which reminds me of the Mozilla bug report about the kitchen [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2007/10/20/what-are-your-favorite-mysql-replication-filtering-rules/' rel='bookmark' title='Permanent Link: What are your favorite MySQL replication filtering rules?'>What are your favorite MySQL replication filtering rules?</a></li><li><a href='http://www.xaprb.com/blog/2008/08/08/my-new-favorite-comic-the-adventures-of-ace-dba/' rel='bookmark' title='Permanent Link: My new favorite comic: The Adventures of Ace, DBA'>My new favorite comic: The Adventures of Ace, DBA</a></li><li><a href='http://www.xaprb.com/blog/2008/04/01/what-is-your-favorite-database-design-book/' rel='bookmark' title='Permanent Link: What is your favorite database design book?'>What is your favorite database design book?</a></li><li><a href='http://www.xaprb.com/blog/2008/12/13/what-are-your-favorite-postgresql-performance-resources/' rel='bookmark' title='Permanent Link: What are your favorite PostgreSQL performance resources?'>What are your favorite PostgreSQL performance resources?</a></li><li><a href='http://www.xaprb.com/blog/2009/03/31/my-favorite-wiki-is-dokuwiki/' rel='bookmark' title='Permanent Link: My favorite wiki is Dokuwiki'>My favorite wiki is Dokuwiki</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Bug reports can be fun.  They can also be terrible.  Either way they can be entertaining.  On the Drizzle IRC channel today I saw a couple references to MySQL bug reports:  <a href="http://bugs.mysql.com/bug.php?id=56177">it is stop working</a> and <a href="http://bugs.mysql.com/bug.php?id=2">Does not make toast</a> (which reminds me of the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=122411">Mozilla bug report about the kitchen sink</a>).  Got any other favourites<sup>1</sup>?</p>

<p><sup>1</sup> This one&#8217;s for Jay.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2007/10/20/what-are-your-favorite-mysql-replication-filtering-rules/' rel='bookmark' title='Permanent Link: What are your favorite MySQL replication filtering rules?'>What are your favorite MySQL replication filtering rules?</a></li><li><a href='http://www.xaprb.com/blog/2008/08/08/my-new-favorite-comic-the-adventures-of-ace-dba/' rel='bookmark' title='Permanent Link: My new favorite comic: The Adventures of Ace, DBA'>My new favorite comic: The Adventures of Ace, DBA</a></li><li><a href='http://www.xaprb.com/blog/2008/04/01/what-is-your-favorite-database-design-book/' rel='bookmark' title='Permanent Link: What is your favorite database design book?'>What is your favorite database design book?</a></li><li><a href='http://www.xaprb.com/blog/2008/12/13/what-are-your-favorite-postgresql-performance-resources/' rel='bookmark' title='Permanent Link: What are your favorite PostgreSQL performance resources?'>What are your favorite PostgreSQL performance resources?</a></li><li><a href='http://www.xaprb.com/blog/2009/03/31/my-favorite-wiki-is-dokuwiki/' rel='bookmark' title='Permanent Link: My favorite wiki is Dokuwiki'>My favorite wiki is Dokuwiki</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2010/08/23/what-are-your-favorite-mysql-bug-reports/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Free webinar on MySQL performance this Thursday</title>
		<link>http://www.xaprb.com/blog/2010/08/23/free-webinar-on-mysql-performance-this-thursday/</link>
		<comments>http://www.xaprb.com/blog/2010/08/23/free-webinar-on-mysql-performance-this-thursday/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 16:35:26 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[ODTUG]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Webinar]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1984</guid>
		<description><![CDATA[ODTUG invited me to give a webinar and I said yes, so this Thursday you&#8217;re invited to join me as I talk about MySQL performance.  We&#8217;ve come a very long way towards a MySQL that can perform well on modern hardware, and there really isn&#8217;t broad recognition of this.  A lot of the [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2008/04/16/get-a-free-sample-chapter-of-high-performance-mysql-second-edition/' rel='bookmark' title='Permanent Link: Get a free sample chapter of High Performance MySQL Second Edition'>Get a free sample chapter of High Performance MySQL Second Edition</a></li><li><a href='http://www.xaprb.com/blog/2008/05/14/mysql-free-software-but-not-open-source/' rel='bookmark' title='Permanent Link: MySQL: Free Software but not Open Source'>MySQL: Free Software but not Open Source</a></li><li><a href='http://www.xaprb.com/blog/2010/08/16/speaking-at-novarug-on-thursday/' rel='bookmark' title='Permanent Link: Speaking at NovaRUG on Thursday'>Speaking at NovaRUG on Thursday</a></li><li><a href='http://www.xaprb.com/blog/2008/07/15/high-performance-mysql-is-going-to-press-again/' rel='bookmark' title='Permanent Link: High Performance MySQL is going to press, again'>High Performance MySQL is going to press, again</a></li><li><a href='http://www.xaprb.com/blog/2007/08/30/coming-soon-high-performance-mysql-second-edition/' rel='bookmark' title='Permanent Link: Coming soon: High Performance MySQL, Second Edition'>Coming soon: High Performance MySQL, Second Edition</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>ODTUG invited me to give a webinar and I said yes, so this Thursday you&#8217;re invited to join me as I talk about MySQL performance.  We&#8217;ve come a very long way towards a MySQL that can perform well on modern hardware, and there really isn&#8217;t broad recognition of this.  A lot of the best work has gone into the InnoDB &#8220;plugin&#8221; storage engine, which was announced after my co-authors and I sent <a href="http://tinyurl.com/highperfmysql">High Performance MySQL</a> to the press.  I will explain what you should be doing differently now than you did two years ago, and suggest a performance-in-a-nutshell configuration baseline for MySQL that&#8217;s quite different from what I&#8217;d have said in 2008. You can <a href="https://www2.gotomeeting.com/register/470088995">register for free through GoToWebinar</a>.  See you there.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2008/04/16/get-a-free-sample-chapter-of-high-performance-mysql-second-edition/' rel='bookmark' title='Permanent Link: Get a free sample chapter of High Performance MySQL Second Edition'>Get a free sample chapter of High Performance MySQL Second Edition</a></li><li><a href='http://www.xaprb.com/blog/2008/05/14/mysql-free-software-but-not-open-source/' rel='bookmark' title='Permanent Link: MySQL: Free Software but not Open Source'>MySQL: Free Software but not Open Source</a></li><li><a href='http://www.xaprb.com/blog/2010/08/16/speaking-at-novarug-on-thursday/' rel='bookmark' title='Permanent Link: Speaking at NovaRUG on Thursday'>Speaking at NovaRUG on Thursday</a></li><li><a href='http://www.xaprb.com/blog/2008/07/15/high-performance-mysql-is-going-to-press-again/' rel='bookmark' title='Permanent Link: High Performance MySQL is going to press, again'>High Performance MySQL is going to press, again</a></li><li><a href='http://www.xaprb.com/blog/2007/08/30/coming-soon-high-performance-mysql-second-edition/' rel='bookmark' title='Permanent Link: Coming soon: High Performance MySQL, Second Edition'>Coming soon: High Performance MySQL, Second Edition</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2010/08/23/free-webinar-on-mysql-performance-this-thursday/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle is improving MySQL</title>
		<link>http://www.xaprb.com/blog/2010/08/18/oracle-is-improving-mysql/</link>
		<comments>http://www.xaprb.com/blog/2010/08/18/oracle-is-improving-mysql/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 12:50:26 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1977</guid>
		<description><![CDATA[I&#8217;ve noticed that a steady and perhaps even growing number of bug reports and feature requests are getting resolved for the next milestone release.  I continue to see signs that Oracle&#8217;s next release of MySQL will not only include much of the unreleased good work that&#8217;s been done over the last few years, but [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/12/14/mysql-enterprisecommunity-split-could-be-renewed-under-oracle/' rel='bookmark' title='Permanent Link: MySQL Enterprise/Community split could be renewed under Oracle'>MySQL Enterprise/Community split could be renewed under Oracle</a></li><li><a href='http://www.xaprb.com/blog/2009/03/13/50-things-to-know-before-migrating-oracle-to-mysql/' rel='bookmark' title='Permanent Link: 50 things to know before migrating Oracle to MySQL'>50 things to know before migrating Oracle to MySQL</a></li><li><a href='http://www.xaprb.com/blog/2009/02/19/migrating-us-government-applications-from-oracle-to-mysql/' rel='bookmark' title='Permanent Link: Migrating US Government applications from Oracle to MySQL'>Migrating US Government applications from Oracle to MySQL</a></li><li><a href='http://www.xaprb.com/blog/2010/05/01/a-review-of-forecasting-oracle-performance-by-craig-shallahamer/' rel='bookmark' title='Permanent Link: A review of Forecasting Oracle Performance by Craig Shallahamer'>A review of Forecasting Oracle Performance by Craig Shallahamer</a></li><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve noticed that a steady and perhaps even growing number of bug reports and feature requests are getting resolved for the next milestone release.  I continue to see signs that Oracle&#8217;s next release of MySQL will not only include much of the unreleased good work that&#8217;s been done over the last few years, but will add a lot of new features and fixes as well.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2009/12/14/mysql-enterprisecommunity-split-could-be-renewed-under-oracle/' rel='bookmark' title='Permanent Link: MySQL Enterprise/Community split could be renewed under Oracle'>MySQL Enterprise/Community split could be renewed under Oracle</a></li><li><a href='http://www.xaprb.com/blog/2009/03/13/50-things-to-know-before-migrating-oracle-to-mysql/' rel='bookmark' title='Permanent Link: 50 things to know before migrating Oracle to MySQL'>50 things to know before migrating Oracle to MySQL</a></li><li><a href='http://www.xaprb.com/blog/2009/02/19/migrating-us-government-applications-from-oracle-to-mysql/' rel='bookmark' title='Permanent Link: Migrating US Government applications from Oracle to MySQL'>Migrating US Government applications from Oracle to MySQL</a></li><li><a href='http://www.xaprb.com/blog/2010/05/01/a-review-of-forecasting-oracle-performance-by-craig-shallahamer/' rel='bookmark' title='Permanent Link: A review of Forecasting Oracle Performance by Craig Shallahamer'>A review of Forecasting Oracle Performance by Craig Shallahamer</a></li><li><a href='http://www.xaprb.com/blog/2009/11/07/a-review-of-optimizing-oracle-performance-by-cary-millsap/' rel='bookmark' title='Permanent Link: A review of Optimizing Oracle Performance by Cary Millsap'>A review of Optimizing Oracle Performance by Cary Millsap</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2010/08/18/oracle-is-improving-mysql/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Speaking at NovaRUG on Thursday</title>
		<link>http://www.xaprb.com/blog/2010/08/16/speaking-at-novarug-on-thursday/</link>
		<comments>http://www.xaprb.com/blog/2010/08/16/speaking-at-novarug-on-thursday/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 13:38:15 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1974</guid>
		<description><![CDATA[I&#8217;ll be joining the NovaRUG (Northern Virginia Ruby Users&#8217; Group) on Thursday to talk about MySQL performance.  See their blog for the details and how to RSVP.

Related posts:Free webinar on MySQL performance this ThursdaySpeaking at MySQL Meetup in Northern VirginiaSpeaking at EdUI Conference 2009Speaking at Surge 2010Speaking at CPOSC 2009


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2010/08/23/free-webinar-on-mysql-performance-this-thursday/' rel='bookmark' title='Permanent Link: Free webinar on MySQL performance this Thursday'>Free webinar on MySQL performance this Thursday</a></li><li><a href='http://www.xaprb.com/blog/2010/07/21/speaking-at-mysql-meetup-in-northern-virginia/' rel='bookmark' title='Permanent Link: Speaking at MySQL Meetup in Northern Virginia'>Speaking at MySQL Meetup in Northern Virginia</a></li><li><a href='http://www.xaprb.com/blog/2009/08/13/speaking-at-edui-conference-2009/' rel='bookmark' title='Permanent Link: Speaking at EdUI Conference 2009'>Speaking at EdUI Conference 2009</a></li><li><a href='http://www.xaprb.com/blog/2010/07/19/speaking-at-surge-2010/' rel='bookmark' title='Permanent Link: Speaking at Surge 2010'>Speaking at Surge 2010</a></li><li><a href='http://www.xaprb.com/blog/2009/10/05/speaking-at-cposc-2009/' rel='bookmark' title='Permanent Link: Speaking at CPOSC 2009'>Speaking at CPOSC 2009</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be joining the <a href="http://novarug.org/">NovaRUG</a> (Northern Virginia Ruby Users&#8217; Group) on Thursday to talk about MySQL performance.  <a href="http://novarug.org/articles/2010/08/12/mysql-performance-for-rails-the-new-reality-by-baron-schwart">See their blog for the details and how to RSVP</a>.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2010/08/23/free-webinar-on-mysql-performance-this-thursday/' rel='bookmark' title='Permanent Link: Free webinar on MySQL performance this Thursday'>Free webinar on MySQL performance this Thursday</a></li><li><a href='http://www.xaprb.com/blog/2010/07/21/speaking-at-mysql-meetup-in-northern-virginia/' rel='bookmark' title='Permanent Link: Speaking at MySQL Meetup in Northern Virginia'>Speaking at MySQL Meetup in Northern Virginia</a></li><li><a href='http://www.xaprb.com/blog/2009/08/13/speaking-at-edui-conference-2009/' rel='bookmark' title='Permanent Link: Speaking at EdUI Conference 2009'>Speaking at EdUI Conference 2009</a></li><li><a href='http://www.xaprb.com/blog/2010/07/19/speaking-at-surge-2010/' rel='bookmark' title='Permanent Link: Speaking at Surge 2010'>Speaking at Surge 2010</a></li><li><a href='http://www.xaprb.com/blog/2009/10/05/speaking-at-cposc-2009/' rel='bookmark' title='Permanent Link: Speaking at CPOSC 2009'>Speaking at CPOSC 2009</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2010/08/16/speaking-at-novarug-on-thursday/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Two subtle bugs in OUTER JOIN queries</title>
		<link>http://www.xaprb.com/blog/2010/08/02/two-subtle-bugs-in-outer-join-queries/</link>
		<comments>http://www.xaprb.com/blog/2010/08/02/two-subtle-bugs-in-outer-join-queries/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 02:38:18 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[Maatkit]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[null]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1971</guid>
		<description><![CDATA[OUTER JOIN queries in SQL are susceptible to two very subtle bugs that I&#8217;ve observed a number of times in the real world.  Daniel and I have been hammering out ways to automatically detect queries that suffer from these bugs, in a relatively new Maatkit tool called mk-query-advisor.  It&#8217;s part of our series [...]


Related posts:<ol><li><a href='http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/' rel='bookmark' title='Permanent Link: How to simulate FULL OUTER JOIN in MySQL'>How to simulate FULL OUTER JOIN in MySQL</a></li><li><a href='http://www.xaprb.com/blog/2005/09/23/how-to-write-a-sql-exclusion-join/' rel='bookmark' title='Permanent Link: How to write a SQL exclusion join'>How to write a SQL exclusion join</a></li><li><a href='http://www.xaprb.com/blog/2006/11/28/how-to-write-sql-join-clauses-more-compactly/' rel='bookmark' title='Permanent Link: How to write SQL JOIN clauses more compactly'>How to write SQL JOIN clauses more compactly</a></li><li><a href='http://www.xaprb.com/blog/2009/04/08/the-dangerous-subtleties-of-left-join-and-count-in-sql/' rel='bookmark' title='Permanent Link: The dangerous subtleties of LEFT JOIN and COUNT() in SQL'>The dangerous subtleties of LEFT JOIN and COUNT() in SQL</a></li><li><a href='http://www.xaprb.com/blog/2005/09/25/insert-if-not-exists-queries-in-mysql/' rel='bookmark' title='Permanent Link: How to write INSERT IF NOT EXISTS queries in standard  SQL'>How to write INSERT IF NOT EXISTS queries in standard  SQL</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>OUTER JOIN queries in SQL are susceptible to two very subtle bugs that I&#8217;ve observed a number of times in the real world.  Daniel and I have been hammering out ways to automatically detect queries that suffer from these bugs, in <a href="http://www.maatkit.org/doc/mk-query-advisor.html">a relatively new Maatkit tool called mk-query-advisor</a>.  It&#8217;s part of our series of advisor tools for MySQL.  I wrote <a href="http://www.xaprb.com/blog/2010/03/16/try-mk-query-advisor-a-new-maatkit-tool/">a blog post about it</a> a while ago.  Automated analysis of bad query patterns is a good thing to write tools to do, because catching buggy queries is hard work if you do it manually.</p>

<p>Let&#8217;s dive right in and analyze these subtle bugs.  Warning: if you don&#8217;t understand how SQL handles NULL, you&#8217;re not going to understand the following.  Many people have a hard time with NULL, which is why these bugs are so hard to understand and avoid.  This is one reason why SQL is a hard language to use properly.</p>

<h3>Bug 1: a column could be NULL for two reasons, and you can&#8217;t distinguish them</h3>

<p>If the outer table in your query contains NULL-able columns, and you place a WHERE clause to filter out all but those rows, you&#8217;re going to get bugs because a non-matching row in the outer table will be all-NULL.  Here&#8217;s an example.  Let&#8217;s start with a plain outer join query:</p>

<code><pre>
select * from L left join R on l_id = r_id;
+------+------+---------+
| l_id | r_id | r_other |
+------+------+---------+
|    1 |    1 |       5 | 
|    2 |    2 |    NULL | 
|    3 | NULL |    NULL | 
+------+------+---------+
</pre></code>

<p>Here we see that one row in the outer table is missing, and one row (the middle row) has a NULL r_other column.  Now, let&#8217;s add a WHERE clause:</p>

<code><pre>
select * from L left join R on l_id = r_id where r_other is null;
+------+------+---------+
| l_id | r_id | r_other |
+------+------+---------+
|    2 |    2 |    NULL | 
|    3 | NULL |    NULL | 
+------+------+---------+
</pre></code>

<p>This query is buggy, because the two rows are returned for completely different reasons, and you can&#8217;t be sure which is which.  IS NULL clauses can safely be placed on the columns used in the JOIN clause, but not on other columns in the outer table that might be NULL.</p>

<h3>Bug 2: an OUTER JOIN is converted to INNER</h3>

<p>If you place a non-null-safe comparison operator on any column in the outer table that isn&#8217;t part of the JOIN clause, you implicitly disable the outer-ness of the query and convert it to an INNER JOIN.  Here&#8217;s an example:</p>

<code><pre>
select * from L left join R on l_id = r_id where r_other > 1;
+------+------+---------+
| l_id | r_id | r_other |
+------+------+---------+
|    1 |    1 |       5 | 
+------+------+---------+
</pre></code>

<p>The left-outer-ness of the above query is what causes the third row to be output in the first query I showed you above.  The greater-than operator in this example automatically makes the left-ness impossible, because anytime there&#8217;s a row in the inner table that has no match in the outer table, it&#8217;ll be filled in with NULLs, and those NULLs will be eliminated by the operator.  So the effect is that only matching rows will ever be output.</p>

<p>If you want to ponder variations and subtleties of the above, you can read more discussion on <a href="http://code.google.com/p/maatkit/issues/detail?id=950">the issue report where we&#8217;re hammering out the details</a> of automatically detecting and warning about these sneaky errors.</p>

<p>Related posts:<ol><li><a href='http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/' rel='bookmark' title='Permanent Link: How to simulate FULL OUTER JOIN in MySQL'>How to simulate FULL OUTER JOIN in MySQL</a></li><li><a href='http://www.xaprb.com/blog/2005/09/23/how-to-write-a-sql-exclusion-join/' rel='bookmark' title='Permanent Link: How to write a SQL exclusion join'>How to write a SQL exclusion join</a></li><li><a href='http://www.xaprb.com/blog/2006/11/28/how-to-write-sql-join-clauses-more-compactly/' rel='bookmark' title='Permanent Link: How to write SQL JOIN clauses more compactly'>How to write SQL JOIN clauses more compactly</a></li><li><a href='http://www.xaprb.com/blog/2009/04/08/the-dangerous-subtleties-of-left-join-and-count-in-sql/' rel='bookmark' title='Permanent Link: The dangerous subtleties of LEFT JOIN and COUNT() in SQL'>The dangerous subtleties of LEFT JOIN and COUNT() in SQL</a></li><li><a href='http://www.xaprb.com/blog/2005/09/25/insert-if-not-exists-queries-in-mysql/' rel='bookmark' title='Permanent Link: How to write INSERT IF NOT EXISTS queries in standard  SQL'>How to write INSERT IF NOT EXISTS queries in standard  SQL</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2010/08/02/two-subtle-bugs-in-outer-join-queries/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
