private void updateDeviceToSelectExpressions(
      Analysis analysis,
      Map<IDeviceID, Set<Expression>> deviceToSelectExpressions,
      Map<IDeviceID, Expression> deviceToSelectExpressionsOfOneMeasurement) {

    for (Map.Entry<IDeviceID, Expression> entry :
        deviceToSelectExpressionsOfOneMeasurement.entrySet()) {
      IDeviceID deviceID = entry.getKey();
      Expression expression = entry.getValue();

      Expression lowerCaseExpression = toLowerCaseExpression(expression);
      analyzeExpressionType(analysis, lowerCaseExpression);
      deviceToSelectExpressions
          .computeIfAbsent(deviceID, key -> new LinkedHashSet<>())
          .add(lowerCaseExpression);
    }
  }
process select component for align by device.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java