title: Inner join returning more rows then regular select
body: <p>I have a query like this:</p>
  
  <pre><code>SELECT id, run_date, feed_type_id, text 
  FROM myTable
  WHERE run_date &gt;= ('20140506', 'yyyymmdd') AND run_date &lt; ('20140506', 'yyyymmdd') + 1
  </code></pre>
  
  <p>This returns me 230k rows.</p>
  
  <p>When I wrap it with a WITH CLAUSE:</p>
  
  <pre><code>WITH daily_run as (
    SELECT     /* MATERIALZE */
      id, run_date, feed_type_id, text 
    FROM myTable
    WHERE run_date &gt;= ('20140506', 'yyyymmdd') AND run_date &lt; ('20140506', 'yyyymmdd') + 1)
  
  SELECT 
  id, run_date, feed_type_id, text from daily_run run; 
  </code></pre>
  
  <p>This also returns me 230k rows.</p>
  
  <p>However when I do a join:</p>
  
  <pre><code>WITH daily_run as (
  SELECT /* MATERIALZE */
  id, run_date, feed_type_id, text 
  FROM myTable
  WHERE run_date &gt;= ('20140506', 'yyyymmdd') AND run_date &lt; ('20140506', 'yyyymmdd') + 1)
  
  SELECT 
  run.id, run.run_date, run.feed_type_id, run.text 
  FROM daily_run run 
    INNER JOIN feed_id_types types 
    ON run.feed_type_id = types.feed_type_id
  </code></pre>
  
  <p>I get an increase of 50k rows. This increase in rows happens no matter what date I run it for (not always 50k). </p>
  
  <p>The other confusing part is replacing the join with a different condition:</p>
  
  <pre><code>SELECT 
    run.id, run.run_date, run.feed_type_id, run.text 
  FROM daily_run run 
  WHERE run.feed_type_id in (SELECT types.feed_type_id FROM feed_id_types types)
  </code></pre>
  
  <p>Returns the correct 230k number.</p>
  
  <p>The table feed_id_types has 19 rows, and I want to join it to determine if I need to process that particular run. </p>
  
  <p>Is there something I am missing from my join condition?</p>