function testMultiPlan() {
  assertEquals(0, cache.getCount());

  rows = [];
  for (var i = 0; i < ROW_COUNT; ++i) {
    var job = lf.testing.hrSchemaSampleData.generateSampleJobData(db);
    job.setId('jobId' + i.toString());
    rows.push(job);
  }

  var newTitle = 'Quantum Physicist';
  var deletedId = 'jobId2';

  var insertQuery = /** @type {!lf.query.InsertBuilder} */ (
      db.insert().into(j).values(rows)).getTaskItem();
  var updateQuery = /** @type {!lf.query.UpdateBuilder} */ (
      db.update(j).set(j.title, newTitle)).getTaskItem();
  var removeQuery = /** @type {!lf.query.DeleteBuilder} */ (
      db.delete().from(j).where(j.id.eq(deletedId))).getTaskItem();

  var queryTask = new lf.proc.UserQueryTask(
      hr.db.getGlobal(), [insertQuery, updateQuery, removeQuery]);

  return queryTask.exec().then(function() {
    assertEquals(ROW_COUNT - 1, cache.getCount());

    return lf.testing.util.selectAll(global, j);
  }).then(function(results) {
    assertEquals(ROW_COUNT - 1, results.length);
    for (var i = 0; i < results.length; ++i) {
      assertEquals(newTitle, results[i].payload()[j.title.getName()]);
      assertFalse(results[i].payload()[j.id.getName()] == deletedId);
    }
  });
}
Tests that a UserQueryTask that includes multiple queries updates both
database and cache.
@return {!IThenable}