private List<ResultColumn> concatSelectWithFrom(
      final SelectComponent selectComponent,
      final List<PartialPath> prefixPaths,
      final MPPQueryContext queryContext)
      throws StatementAnalyzeException {
    // resultColumns after concat
    List<ResultColumn> resultColumns = new ArrayList<>();
    for (ResultColumn resultColumn : selectComponent.getResultColumns()) {
      List<Expression> resultExpressions =
          ExpressionAnalyzer.concatExpressionWithSuffixPaths(
              resultColumn.getExpression(), prefixPaths, patternTree, queryContext);
      for (Expression resultExpression : resultExpressions) {
        resultColumns.add(
            new ResultColumn(
                resultExpression, resultColumn.getAlias(), resultColumn.getColumnType()));
      }
    }
    return resultColumns;
  }
Concat the prefix path in the SELECT clause and the suffix path in the FROM clause into a full
path pattern. And construct pattern tree.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/ConcatPathRewriter.java