message: In aggregate without GROUP BY, also wrap column references in FIRST() aggregate.
diff: @@ -24,18 +24,6 @@ static unique_ptr<Expression> replace_columns_with_group_refs(
  group_ref->alias = expr->alias.empty() ? group->GetName() : expr->alias;
  return group_ref;
  }
  - // if (expr->GetExpressionClass() == ExpressionClass::ALIAS_REF) {
  - // // an alias reference, check if it points to a GROUP BY column
  - // auto &alias_ref = (AliasRefExpression &)*expr;
  - // auto entry = groups.find(alias_ref.reference);
  - // if (entry != groups.end()) {
  - // // it points to a group! replace with a bound expression
  - // auto group_ref = make_unique<BoundExpression>(entry->first->return_type, entry->second);
  - // group_ref->alias = string(alias_ref.GetName());
  - // return group_ref;
  - // }
  - // wrap_in_first_aggregate = true;
  - // }
  if (expr->GetExpressionClass() == ExpressionClass::BOUND_COLUMN_REF) {
  // a column reference that does not refer to a GROUP column
  wrap_in_first_aggregate = true;
  @@ -140,6 +128,8 @@ void Binder::Bind(SelectNode &statement) {
  statement.where_clause->ResolveType();
  }
  + if (statement.HasAggregation()) {
  + unordered_map<Expression *, size_t, ExpressionHashFunction, ExpressionEquality> groups;
  if (statement.HasGroup()) {
  // bind group columns
  for (auto &group : statement.groupby.groups) {
  @@ -148,7 +138,6 @@ void Binder::Bind(SelectNode &statement) {
  }
  // handle aliases in the GROUP BY columns
  - unordered_map<Expression *, size_t, ExpressionHashFunction, ExpressionEquality> groups;
  for (size_t i = 0; i < statement.groupby.groups.size(); i++) {
  if (statement.groupby.groups[i]->type == ExpressionType::BOUND_REF) {
  // alias reference
  @@ -163,6 +152,7 @@ void Binder::Bind(SelectNode &statement) {
  }
  groups[statement.groupby.groups[i].get()] = i;
  }
  + }
  // handle column references in the SELECT clause that are not part of aggregates
  // we either replace with GROUP REFERENCES, or add an implicit FIRST() aggregation over them
  