message: String-agg ser/de
diff: #include "duckdb/common/algorithm.hpp"
  #include "duckdb/execution/expression_executor.hpp"
  #include "duckdb/planner/expression/bound_constant_expression.hpp"
  +#include "duckdb/common/field_writer.hpp"
  namespace duckdb {
  @@ -137,25 +138,34 @@ unique_ptr<FunctionData> StringAggBind(ClientContext &context, AggregateFunction
  return make_unique<StringAggBindData>(separator_val.ToString());
  }
  +static void StringAggSerialize(FieldWriter &writer, const FunctionData *bind_data_p,
  + const AggregateFunction &function) {
  + D_ASSERT(bind_data_p);
  + auto bind_data = (StringAggBindData *)bind_data_p;
  + writer.WriteString(bind_data->sep);
  +}
  +
  +unique_ptr<FunctionData> StringAggDeserialize(ClientContext &context, FieldReader &reader,
  + AggregateFunction &bound_function) {
  + auto sep = reader.ReadRequired<string>();
  + return make_unique<StringAggBindData>(move(sep));
  +}
  +
  void StringAggFun::RegisterFunction(BuiltinFunctions &set) {
  AggregateFunctionSet string_agg("string_agg");
  - string_agg.AddFunction(
  - AggregateFunction({LogicalType::VARCHAR, LogicalType::VARCHAR}, LogicalType::VARCHAR,
  - AggregateFunction::StateSize<StringAggState>,
  - AggregateFunction::StateInitialize<StringAggState, StringAggFunction>,
  - AggregateFunction::UnaryScatterUpdate<StringAggState, string_t, StringAggFunction>,
  - AggregateFunction::StateCombine<StringAggState, StringAggFunction>,
  - AggregateFunction::StateFinalize<StringAggState, string_t, StringAggFunction>,
  - AggregateFunction::UnaryUpdate<StringAggState, string_t, StringAggFunction>, StringAggBind,
  - AggregateFunction::StateDestroy<StringAggState, StringAggFunction>));
  - string_agg.AddFunction(
  - AggregateFunction({LogicalType::VARCHAR}, LogicalType::VARCHAR, AggregateFunction::StateSize<StringAggState>,
  + AggregateFunction string_agg_param(
  + {LogicalType::VARCHAR}, LogicalType::VARCHAR, AggregateFunction::StateSize<StringAggState>,
  AggregateFunction::StateInitialize<StringAggState, StringAggFunction>,
  AggregateFunction::UnaryScatterUpdate<StringAggState, string_t, StringAggFunction>,
  AggregateFunction::StateCombine<StringAggState, StringAggFunction>,
  AggregateFunction::StateFinalize<StringAggState, string_t, StringAggFunction>,
  AggregateFunction::UnaryUpdate<StringAggState, string_t, StringAggFunction>, StringAggBind,
  - AggregateFunction::StateDestroy<StringAggState, StringAggFunction>));
  + AggregateFunction::StateDestroy<StringAggState, StringAggFunction>);
  + string_agg_param.serialize = StringAggSerialize;
  + string_agg_param.deserialize = StringAggDeserialize;
  + string_agg.AddFunction(string_agg_param);
  + string_agg_param.arguments.push_back(LogicalType::VARCHAR);
  + string_agg.AddFunction(string_agg_param);
  set.AddFunction(string_agg);
  string_agg.name = "group_concat";
  set.AddFunction(string_agg);
  