private String getParametersString() {
    if (parametersString == null) {
      StringBuilder builder = new StringBuilder();
      if (!expressions.isEmpty()) {
        builder.append(expressions.get(0).getExpressionString());
        for (int i = 1; i < expressions.size(); ++i) {
          builder.append(", ").append(expressions.get(i).getExpressionString());
        }
      }
      if (!functionAttributes.isEmpty()) {
        // Some built-in scalar functions may have different header.
        if (BuiltinScalarFunction.contains(functionName)) {
          BuiltInScalarFunctionHelperFactory.createHelper(functionName)
              .appendFunctionAttributes(!expressions.isEmpty(), builder, functionAttributes);
        } else {
          appendAttributes(!expressions.isEmpty(), builder, functionAttributes);
        }
      }
      parametersString = builder.toString();
    }
    return parametersString;
  }
Generates the parameter part of the function column name.

<p>Example:

<p>Full column name -> udf(root.sg.d.s1, sin(root.sg.d.s1), 'key1'='value1', 'key2'='value2')

<p>The parameter part -> root.sg.d.s1, sin(root.sg.d.s1), 'key1'='value1', 'key2'='value2'
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java