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

  var job = lf.testing.hrSchemaSampleData.generateSampleJobData(db);
  // Creating two queries to be executed within the same transaction. The second
  // query will fail because of a primary key constraint violation. Expecting
  // the entire transaction to be rolled back as if it never happened.
  var insertQuery = /** @type {!lf.query.InsertBuilder} */ (
      db.insert().into(j).values([job])).getTaskItem();
  var insertAgainQuery = /** @type {!lf.query.InsertBuilder} */ (
      db.insert().into(j).values([job])).getTaskItem();

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

  // 201: Duplicate keys are not allowed.
  return lf.testing.util.assertPromiseReject(201, queryTask.exec()).then(
      function() {
        assertEquals(0, cache.getCount());
        return lf.testing.util.selectAll(global, j);
      }).then(
      function(results) {
        assertEquals(0, results.length);
      });
}
Testing that when a UserQueryTask fails to execute a rejected promise is
returned and that indices, cache and backstore are in the state prior to the
task have been started.
@return {!IThenable}