function testSinglePlan_ParametrizedQuery() {
  var promiseResolver = goog.Promise.withResolver();

  var selectQueryBuilder = /** @type {!lf.query.SelectBuilder} */ (
      db.select().from(j).where(j.id.between(lf.bind(0), lf.bind(1))));

  var observerCallback = function(changes) {
    // Expecting one "change" record for each of rows with IDs jobId2, jobId3,
    // jobId4.
    assertEquals(3, changes.length);
    changes.forEach(function(change) {
      assertEquals(1, change['addedCount']);
    });

    db.unobserve(selectQueryBuilder, observerCallback);
    promiseResolver.resolve();
  };

  var insertQueryTask = new lf.proc.UserQueryTask(
      hr.db.getGlobal(), [getSampleQuery()]);

  insertQueryTask.exec().then(function() {
    // Start observing.
    db.observe(selectQueryBuilder, observerCallback);

    // Bind parameters to some values.
    selectQueryBuilder.bind(['jobId2', 'jobId4']);

    var selectQueryTask = new lf.proc.UserQueryTask(
        hr.db.getGlobal(), [selectQueryBuilder.getTaskItem()]);
    return selectQueryTask.exec();
  }, function(e) {
    promiseResolver.reject(e);
  });
  return promiseResolver.promise;
}
Tests that when a parametrized query finishes execution, observers are
notified.
@return {!IThenable}