@Override
  public IntermediateLayer visitTimeSeriesOperand(
      TimeSeriesOperand timeSeriesOperand, IntermediateLayerVisitorContext context) {
    if (!context.expressionIntermediateLayerMap.containsKey(timeSeriesOperand)) {
      float memoryBudgetInMB = context.memoryAssigner.assign();

      LayerReader parentLayerReader =
          context.rawTimeSeriesInputLayer.constructValueReader(
              timeSeriesOperand.getInputColumnIndex());

      context.expressionIntermediateLayerMap.put(
          timeSeriesOperand,
          context.memoryAssigner.getReference(timeSeriesOperand) == 1
              ? new SingleInputSingleReferenceLayer(
                  timeSeriesOperand, context.queryId, memoryBudgetInMB, parentLayerReader)
              : new SingleInputMultiReferenceLayer(
                  timeSeriesOperand, context.queryId, memoryBudgetInMB, parentLayerReader));
    }

    return context.expressionIntermediateLayerMap.get(timeSeriesOperand);
  }
Responsible for constructing {@link IntermediateLayer} through Expression.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java