function testCreate_DeletePlan() {
  var table = env.schema.table('tableA');

  var queryBuilder = new lf.query.DeleteBuilder(lf.Global.get());
  queryBuilder.
      from(table).
      where(lf.op.and(table['id'].eq('id'), table['name'].eq('name')));

  var query = queryBuilder.getQuery();
  assertEquals(
      2,
      /** @type {!lf.pred.PredicateNode} */ (query.where).getChildCount());

  var expectedTree =
      'delete(tableA)\n' +
      '-select(value_pred(tableA.id eq id))\n' +
      '--select(value_pred(tableA.name eq name))\n' +
      '---table_access(tableA)\n';

  var logicalPlan = logicalPlanFactory.create(query);
  assertEquals(expectedTree, lf.tree.toString(logicalPlan.getRoot()));

  assertEquals(
      2,
      /** @type {!lf.pred.PredicateNode} */ (query.where).getChildCount());
}
Tests that the generated logical query plan for a simple DELETE query is as
expected and also that the query object itself is not mutated as part of
generating a plan. This is essential such that calling
DefaultBuilder#explain() does not have any side effects which would prevent
a subsequent call to DefaultBuilder#exec() from operating on the same query
object.