title: Slick 3.0 bulk insert or update (upsert)
body: <p>what is the correct way to do a bulk insertOrUpdate in Slick 3.0?</p>
  
  <p>I am using MySQL where the appropriate query would be</p>
  
  <pre><code>INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
  </code></pre>
  
  <p><a href="https://stackoverflow.com/questions/6286452/mysql-bulk-insert-or-update">MySQL bulk INSERT or UPDATE</a></p>
  
  <p>Here is my current code which is very slow :-(</p>
  
  <pre><code>// FIXME -- this is slow but will stop repeats, an insertOrUpdate
  // functions for a list would be much better
  val rowsInserted = rows.map {
    row =&gt; await(run(TableQuery[FooTable].insertOrUpdate(row)))
  }.sum
  </code></pre>
  
  <p>What I am looking for is the equivalent of</p>
  
  <pre><code>def insertOrUpdate(values: Iterable[U]): DriverAction[MultiInsertResult, NoStream, Effect.Write]
  </code></pre>