class BeamSqlConcatExpression extends BeamSqlExpression {

  @Override
  public BeamSqlPrimitive evaluate(
      Row inputRow, BoundedWindow window, ImmutableMap<Integer, Object> correlateEnv) {
    String left = opValueEvaluated(0, inputRow, window, correlateEnv);
    String right = opValueEvaluated(1, inputRow, window, correlateEnv);

    return BeamSqlPrimitive.of(
        SqlTypeName.VARCHAR,
        new StringBuilder(left.length() + right.length()).append(left).append(right).toString());
  }

  protected  BeamSqlConcatExpression(List<BeamSqlExpression> operands, SqlTypeName outputType);
  public  BeamSqlConcatExpression(List<BeamSqlExpression> operands);

}