public static ViewExpression deserialize(ByteBuffer byteBuffer) {
    short type = ReadWriteIOUtils.readShort(byteBuffer);

    ViewExpression expression;
    switch (type) {
      case -4:
        expression = new ConstantViewOperand(byteBuffer);
        break;
      case -3:
        expression = new TimestampViewOperand(byteBuffer);
        break;
      case -2:
        expression = new TimeSeriesViewOperand(byteBuffer);
        break;
      case -1:
        expression = new FunctionViewExpression(byteBuffer);
        break;

      case 0:
        expression = new NegationViewExpression(byteBuffer);
        break;
      case 1:
        expression = new LogicNotViewExpression(byteBuffer);
        break;

      case 2:
        expression = new MultiplicationViewExpression(byteBuffer);
        break;
      case 3:
        expression = new DivisionViewExpression(byteBuffer);
        break;
      case 4:
        expression = new ModuloViewExpression(byteBuffer);
        break;

      case 5:
        expression = new AdditionViewExpression(byteBuffer);
        break;
      case 6:
        expression = new SubtractionViewExpression(byteBuffer);
        break;

      case 7:
        expression = new EqualToViewExpression(byteBuffer);
        break;
      case 8:
        expression = new NonEqualViewExpression(byteBuffer);
        break;
      case 9:
        expression = new GreaterEqualViewExpression(byteBuffer);
        break;
      case 10:
        expression = new GreaterThanViewExpression(byteBuffer);
        break;
      case 11:
        expression = new LessEqualViewExpression(byteBuffer);
        break;
      case 12:
        expression = new LessThanViewExpression(byteBuffer);
        break;

      case 13:
        expression = new LikeViewExpression(byteBuffer);
        break;
      case 14:
        expression = new RegularViewExpression(byteBuffer);
        break;

      case 15:
        expression = new IsNullViewExpression(byteBuffer);
        break;

      case 16:
        expression = new BetweenViewExpression(byteBuffer);
        break;

      case 17:
        expression = new InViewExpression(byteBuffer);
        break;

      case 18:
        expression = new LogicAndViewExpression(byteBuffer);
        break;

      case 19:
        expression = new LogicOrViewExpression(byteBuffer);
        break;

      case 20:
        expression = new NullViewOperand();
        break;
      default:
        throw new IllegalArgumentException("Invalid viewExpression type: " + type);
    }
    return expression;
  }
@return if this view expression could be a source for an ALIAS series (one kind of view),
    return true; else return false. Foe example, a SINGLE TimeSeriesOperand could be a source
    for an alias view.
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/ViewExpression.java