title: What kind of join is used in a Vertica UPDATE statement?
body: <p>Vertica has an interesting update syntax when updating a table based on a join value. Instead of using a join to find the update rows, it mandates a syntax like this:</p>
  
  <pre><code>UPDATE a
  SET col = b.val
  where a.id = b.id
  </code></pre>
  
  <p>(Note that this syntax is indeed mandated in this case, because Vertica prohibits us from using a where clause that includes a "self-join", that is a join referencing the table being updated, in this case <code>a</code>.)</p>
  
  <p>This syntax is nice, but it's less explicit about the join being used than other SQL dialects. For example, what happens in this case?</p>
  
  <pre><code>UPDATE a
  SET col = CASE 0 if b.id IS NULL ELSE b.val END
  where a.id = b.id
  </code></pre>
  
  <p>What happens when <code>a.id</code> has no match in <code>b.id</code>? Does <code>a.col</code> not get updated, as though the condition <code>a.id = b.id</code> represented an inner join of <code>a</code> and <code>b</code>? Or does it get updated to zero, as if the condition were a left outer join?</p>