TRecCTENode.java

/**
 * Autogenerated by Thrift Compiler (0.16.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.apache.doris.thrift;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.16.0)", date = "2026-05-14")
public class TRecCTENode implements org.apache.thrift.TBase<TRecCTENode, TRecCTENode._Fields>, java.io.Serializable, Cloneable, Comparable<TRecCTENode> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TRecCTENode");

  private static final org.apache.thrift.protocol.TField IS_UNION_ALL_FIELD_DESC = new org.apache.thrift.protocol.TField("is_union_all", org.apache.thrift.protocol.TType.BOOL, (short)1);
  private static final org.apache.thrift.protocol.TField TARGETS_FIELD_DESC = new org.apache.thrift.protocol.TField("targets", org.apache.thrift.protocol.TType.LIST, (short)2);
  private static final org.apache.thrift.protocol.TField FRAGMENTS_TO_RESET_FIELD_DESC = new org.apache.thrift.protocol.TField("fragments_to_reset", org.apache.thrift.protocol.TType.LIST, (short)3);
  private static final org.apache.thrift.protocol.TField RESULT_EXPR_LISTS_FIELD_DESC = new org.apache.thrift.protocol.TField("result_expr_lists", org.apache.thrift.protocol.TType.LIST, (short)4);
  private static final org.apache.thrift.protocol.TField REC_SIDE_RUNTIME_FILTER_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("rec_side_runtime_filter_ids", org.apache.thrift.protocol.TType.LIST, (short)5);
  private static final org.apache.thrift.protocol.TField IS_USED_BY_OTHER_REC_CTE_FIELD_DESC = new org.apache.thrift.protocol.TField("is_used_by_other_rec_cte", org.apache.thrift.protocol.TType.BOOL, (short)6);

  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new TRecCTENodeStandardSchemeFactory();
  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new TRecCTENodeTupleSchemeFactory();

  public boolean is_union_all; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<TRecCTETarget> targets; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<TRecCTEResetInfo> fragments_to_reset; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> result_expr_lists; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> rec_side_runtime_filter_ids; // optional
  public boolean is_used_by_other_rec_cte; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    IS_UNION_ALL((short)1, "is_union_all"),
    TARGETS((short)2, "targets"),
    FRAGMENTS_TO_RESET((short)3, "fragments_to_reset"),
    RESULT_EXPR_LISTS((short)4, "result_expr_lists"),
    REC_SIDE_RUNTIME_FILTER_IDS((short)5, "rec_side_runtime_filter_ids"),
    IS_USED_BY_OTHER_REC_CTE((short)6, "is_used_by_other_rec_cte");

    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();

    static {
      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    @org.apache.thrift.annotation.Nullable
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // IS_UNION_ALL
          return IS_UNION_ALL;
        case 2: // TARGETS
          return TARGETS;
        case 3: // FRAGMENTS_TO_RESET
          return FRAGMENTS_TO_RESET;
        case 4: // RESULT_EXPR_LISTS
          return RESULT_EXPR_LISTS;
        case 5: // REC_SIDE_RUNTIME_FILTER_IDS
          return REC_SIDE_RUNTIME_FILTER_IDS;
        case 6: // IS_USED_BY_OTHER_REC_CTE
          return IS_USED_BY_OTHER_REC_CTE;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    @org.apache.thrift.annotation.Nullable
    public static _Fields findByName(java.lang.String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final java.lang.String _fieldName;

    _Fields(short thriftId, java.lang.String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public java.lang.String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __IS_UNION_ALL_ISSET_ID = 0;
  private static final int __IS_USED_BY_OTHER_REC_CTE_ISSET_ID = 1;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.IS_UNION_ALL,_Fields.TARGETS,_Fields.FRAGMENTS_TO_RESET,_Fields.RESULT_EXPR_LISTS,_Fields.REC_SIDE_RUNTIME_FILTER_IDS,_Fields.IS_USED_BY_OTHER_REC_CTE};
  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.IS_UNION_ALL, new org.apache.thrift.meta_data.FieldMetaData("is_union_all", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.TARGETS, new org.apache.thrift.meta_data.FieldMetaData("targets", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TRecCTETarget.class))));
    tmpMap.put(_Fields.FRAGMENTS_TO_RESET, new org.apache.thrift.meta_data.FieldMetaData("fragments_to_reset", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TRecCTEResetInfo.class))));
    tmpMap.put(_Fields.RESULT_EXPR_LISTS, new org.apache.thrift.meta_data.FieldMetaData("result_expr_lists", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
                new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.doris.thrift.TExpr.class)))));
    tmpMap.put(_Fields.REC_SIDE_RUNTIME_FILTER_IDS, new org.apache.thrift.meta_data.FieldMetaData("rec_side_runtime_filter_ids", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
    tmpMap.put(_Fields.IS_USED_BY_OTHER_REC_CTE, new org.apache.thrift.meta_data.FieldMetaData("is_used_by_other_rec_cte", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TRecCTENode.class, metaDataMap);
  }

  public TRecCTENode() {
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public TRecCTENode(TRecCTENode other) {
    __isset_bitfield = other.__isset_bitfield;
    this.is_union_all = other.is_union_all;
    if (other.isSetTargets()) {
      java.util.List<TRecCTETarget> __this__targets = new java.util.ArrayList<TRecCTETarget>(other.targets.size());
      for (TRecCTETarget other_element : other.targets) {
        __this__targets.add(new TRecCTETarget(other_element));
      }
      this.targets = __this__targets;
    }
    if (other.isSetFragmentsToReset()) {
      java.util.List<TRecCTEResetInfo> __this__fragments_to_reset = new java.util.ArrayList<TRecCTEResetInfo>(other.fragments_to_reset.size());
      for (TRecCTEResetInfo other_element : other.fragments_to_reset) {
        __this__fragments_to_reset.add(new TRecCTEResetInfo(other_element));
      }
      this.fragments_to_reset = __this__fragments_to_reset;
    }
    if (other.isSetResultExprLists()) {
      java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> __this__result_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(other.result_expr_lists.size());
      for (java.util.List<org.apache.doris.thrift.TExpr> other_element : other.result_expr_lists) {
        java.util.List<org.apache.doris.thrift.TExpr> __this__result_expr_lists_copy = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(other_element.size());
        for (org.apache.doris.thrift.TExpr other_element_element : other_element) {
          __this__result_expr_lists_copy.add(new org.apache.doris.thrift.TExpr(other_element_element));
        }
        __this__result_expr_lists.add(__this__result_expr_lists_copy);
      }
      this.result_expr_lists = __this__result_expr_lists;
    }
    if (other.isSetRecSideRuntimeFilterIds()) {
      java.util.List<java.lang.Integer> __this__rec_side_runtime_filter_ids = new java.util.ArrayList<java.lang.Integer>(other.rec_side_runtime_filter_ids);
      this.rec_side_runtime_filter_ids = __this__rec_side_runtime_filter_ids;
    }
    this.is_used_by_other_rec_cte = other.is_used_by_other_rec_cte;
  }

  public TRecCTENode deepCopy() {
    return new TRecCTENode(this);
  }

  @Override
  public void clear() {
    setIsUnionAllIsSet(false);
    this.is_union_all = false;
    this.targets = null;
    this.fragments_to_reset = null;
    this.result_expr_lists = null;
    this.rec_side_runtime_filter_ids = null;
    setIsUsedByOtherRecCteIsSet(false);
    this.is_used_by_other_rec_cte = false;
  }

  public boolean isIsUnionAll() {
    return this.is_union_all;
  }

  public TRecCTENode setIsUnionAll(boolean is_union_all) {
    this.is_union_all = is_union_all;
    setIsUnionAllIsSet(true);
    return this;
  }

  public void unsetIsUnionAll() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __IS_UNION_ALL_ISSET_ID);
  }

  /** Returns true if field is_union_all is set (has been assigned a value) and false otherwise */
  public boolean isSetIsUnionAll() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __IS_UNION_ALL_ISSET_ID);
  }

  public void setIsUnionAllIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __IS_UNION_ALL_ISSET_ID, value);
  }

  public int getTargetsSize() {
    return (this.targets == null) ? 0 : this.targets.size();
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<TRecCTETarget> getTargetsIterator() {
    return (this.targets == null) ? null : this.targets.iterator();
  }

  public void addToTargets(TRecCTETarget elem) {
    if (this.targets == null) {
      this.targets = new java.util.ArrayList<TRecCTETarget>();
    }
    this.targets.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<TRecCTETarget> getTargets() {
    return this.targets;
  }

  public TRecCTENode setTargets(@org.apache.thrift.annotation.Nullable java.util.List<TRecCTETarget> targets) {
    this.targets = targets;
    return this;
  }

  public void unsetTargets() {
    this.targets = null;
  }

  /** Returns true if field targets is set (has been assigned a value) and false otherwise */
  public boolean isSetTargets() {
    return this.targets != null;
  }

  public void setTargetsIsSet(boolean value) {
    if (!value) {
      this.targets = null;
    }
  }

  public int getFragmentsToResetSize() {
    return (this.fragments_to_reset == null) ? 0 : this.fragments_to_reset.size();
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<TRecCTEResetInfo> getFragmentsToResetIterator() {
    return (this.fragments_to_reset == null) ? null : this.fragments_to_reset.iterator();
  }

  public void addToFragmentsToReset(TRecCTEResetInfo elem) {
    if (this.fragments_to_reset == null) {
      this.fragments_to_reset = new java.util.ArrayList<TRecCTEResetInfo>();
    }
    this.fragments_to_reset.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<TRecCTEResetInfo> getFragmentsToReset() {
    return this.fragments_to_reset;
  }

  public TRecCTENode setFragmentsToReset(@org.apache.thrift.annotation.Nullable java.util.List<TRecCTEResetInfo> fragments_to_reset) {
    this.fragments_to_reset = fragments_to_reset;
    return this;
  }

  public void unsetFragmentsToReset() {
    this.fragments_to_reset = null;
  }

  /** Returns true if field fragments_to_reset is set (has been assigned a value) and false otherwise */
  public boolean isSetFragmentsToReset() {
    return this.fragments_to_reset != null;
  }

  public void setFragmentsToResetIsSet(boolean value) {
    if (!value) {
      this.fragments_to_reset = null;
    }
  }

  public int getResultExprListsSize() {
    return (this.result_expr_lists == null) ? 0 : this.result_expr_lists.size();
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<java.util.List<org.apache.doris.thrift.TExpr>> getResultExprListsIterator() {
    return (this.result_expr_lists == null) ? null : this.result_expr_lists.iterator();
  }

  public void addToResultExprLists(java.util.List<org.apache.doris.thrift.TExpr> elem) {
    if (this.result_expr_lists == null) {
      this.result_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>();
    }
    this.result_expr_lists.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> getResultExprLists() {
    return this.result_expr_lists;
  }

  public TRecCTENode setResultExprLists(@org.apache.thrift.annotation.Nullable java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> result_expr_lists) {
    this.result_expr_lists = result_expr_lists;
    return this;
  }

  public void unsetResultExprLists() {
    this.result_expr_lists = null;
  }

  /** Returns true if field result_expr_lists is set (has been assigned a value) and false otherwise */
  public boolean isSetResultExprLists() {
    return this.result_expr_lists != null;
  }

  public void setResultExprListsIsSet(boolean value) {
    if (!value) {
      this.result_expr_lists = null;
    }
  }

  public int getRecSideRuntimeFilterIdsSize() {
    return (this.rec_side_runtime_filter_ids == null) ? 0 : this.rec_side_runtime_filter_ids.size();
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.Iterator<java.lang.Integer> getRecSideRuntimeFilterIdsIterator() {
    return (this.rec_side_runtime_filter_ids == null) ? null : this.rec_side_runtime_filter_ids.iterator();
  }

  public void addToRecSideRuntimeFilterIds(int elem) {
    if (this.rec_side_runtime_filter_ids == null) {
      this.rec_side_runtime_filter_ids = new java.util.ArrayList<java.lang.Integer>();
    }
    this.rec_side_runtime_filter_ids.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<java.lang.Integer> getRecSideRuntimeFilterIds() {
    return this.rec_side_runtime_filter_ids;
  }

  public TRecCTENode setRecSideRuntimeFilterIds(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> rec_side_runtime_filter_ids) {
    this.rec_side_runtime_filter_ids = rec_side_runtime_filter_ids;
    return this;
  }

  public void unsetRecSideRuntimeFilterIds() {
    this.rec_side_runtime_filter_ids = null;
  }

  /** Returns true if field rec_side_runtime_filter_ids is set (has been assigned a value) and false otherwise */
  public boolean isSetRecSideRuntimeFilterIds() {
    return this.rec_side_runtime_filter_ids != null;
  }

  public void setRecSideRuntimeFilterIdsIsSet(boolean value) {
    if (!value) {
      this.rec_side_runtime_filter_ids = null;
    }
  }

  public boolean isIsUsedByOtherRecCte() {
    return this.is_used_by_other_rec_cte;
  }

  public TRecCTENode setIsUsedByOtherRecCte(boolean is_used_by_other_rec_cte) {
    this.is_used_by_other_rec_cte = is_used_by_other_rec_cte;
    setIsUsedByOtherRecCteIsSet(true);
    return this;
  }

  public void unsetIsUsedByOtherRecCte() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __IS_USED_BY_OTHER_REC_CTE_ISSET_ID);
  }

  /** Returns true if field is_used_by_other_rec_cte is set (has been assigned a value) and false otherwise */
  public boolean isSetIsUsedByOtherRecCte() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __IS_USED_BY_OTHER_REC_CTE_ISSET_ID);
  }

  public void setIsUsedByOtherRecCteIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __IS_USED_BY_OTHER_REC_CTE_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
    switch (field) {
    case IS_UNION_ALL:
      if (value == null) {
        unsetIsUnionAll();
      } else {
        setIsUnionAll((java.lang.Boolean)value);
      }
      break;

    case TARGETS:
      if (value == null) {
        unsetTargets();
      } else {
        setTargets((java.util.List<TRecCTETarget>)value);
      }
      break;

    case FRAGMENTS_TO_RESET:
      if (value == null) {
        unsetFragmentsToReset();
      } else {
        setFragmentsToReset((java.util.List<TRecCTEResetInfo>)value);
      }
      break;

    case RESULT_EXPR_LISTS:
      if (value == null) {
        unsetResultExprLists();
      } else {
        setResultExprLists((java.util.List<java.util.List<org.apache.doris.thrift.TExpr>>)value);
      }
      break;

    case REC_SIDE_RUNTIME_FILTER_IDS:
      if (value == null) {
        unsetRecSideRuntimeFilterIds();
      } else {
        setRecSideRuntimeFilterIds((java.util.List<java.lang.Integer>)value);
      }
      break;

    case IS_USED_BY_OTHER_REC_CTE:
      if (value == null) {
        unsetIsUsedByOtherRecCte();
      } else {
        setIsUsedByOtherRecCte((java.lang.Boolean)value);
      }
      break;

    }
  }

  @org.apache.thrift.annotation.Nullable
  public java.lang.Object getFieldValue(_Fields field) {
    switch (field) {
    case IS_UNION_ALL:
      return isIsUnionAll();

    case TARGETS:
      return getTargets();

    case FRAGMENTS_TO_RESET:
      return getFragmentsToReset();

    case RESULT_EXPR_LISTS:
      return getResultExprLists();

    case REC_SIDE_RUNTIME_FILTER_IDS:
      return getRecSideRuntimeFilterIds();

    case IS_USED_BY_OTHER_REC_CTE:
      return isIsUsedByOtherRecCte();

    }
    throw new java.lang.IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new java.lang.IllegalArgumentException();
    }

    switch (field) {
    case IS_UNION_ALL:
      return isSetIsUnionAll();
    case TARGETS:
      return isSetTargets();
    case FRAGMENTS_TO_RESET:
      return isSetFragmentsToReset();
    case RESULT_EXPR_LISTS:
      return isSetResultExprLists();
    case REC_SIDE_RUNTIME_FILTER_IDS:
      return isSetRecSideRuntimeFilterIds();
    case IS_USED_BY_OTHER_REC_CTE:
      return isSetIsUsedByOtherRecCte();
    }
    throw new java.lang.IllegalStateException();
  }

  @Override
  public boolean equals(java.lang.Object that) {
    if (that instanceof TRecCTENode)
      return this.equals((TRecCTENode)that);
    return false;
  }

  public boolean equals(TRecCTENode that) {
    if (that == null)
      return false;
    if (this == that)
      return true;

    boolean this_present_is_union_all = true && this.isSetIsUnionAll();
    boolean that_present_is_union_all = true && that.isSetIsUnionAll();
    if (this_present_is_union_all || that_present_is_union_all) {
      if (!(this_present_is_union_all && that_present_is_union_all))
        return false;
      if (this.is_union_all != that.is_union_all)
        return false;
    }

    boolean this_present_targets = true && this.isSetTargets();
    boolean that_present_targets = true && that.isSetTargets();
    if (this_present_targets || that_present_targets) {
      if (!(this_present_targets && that_present_targets))
        return false;
      if (!this.targets.equals(that.targets))
        return false;
    }

    boolean this_present_fragments_to_reset = true && this.isSetFragmentsToReset();
    boolean that_present_fragments_to_reset = true && that.isSetFragmentsToReset();
    if (this_present_fragments_to_reset || that_present_fragments_to_reset) {
      if (!(this_present_fragments_to_reset && that_present_fragments_to_reset))
        return false;
      if (!this.fragments_to_reset.equals(that.fragments_to_reset))
        return false;
    }

    boolean this_present_result_expr_lists = true && this.isSetResultExprLists();
    boolean that_present_result_expr_lists = true && that.isSetResultExprLists();
    if (this_present_result_expr_lists || that_present_result_expr_lists) {
      if (!(this_present_result_expr_lists && that_present_result_expr_lists))
        return false;
      if (!this.result_expr_lists.equals(that.result_expr_lists))
        return false;
    }

    boolean this_present_rec_side_runtime_filter_ids = true && this.isSetRecSideRuntimeFilterIds();
    boolean that_present_rec_side_runtime_filter_ids = true && that.isSetRecSideRuntimeFilterIds();
    if (this_present_rec_side_runtime_filter_ids || that_present_rec_side_runtime_filter_ids) {
      if (!(this_present_rec_side_runtime_filter_ids && that_present_rec_side_runtime_filter_ids))
        return false;
      if (!this.rec_side_runtime_filter_ids.equals(that.rec_side_runtime_filter_ids))
        return false;
    }

    boolean this_present_is_used_by_other_rec_cte = true && this.isSetIsUsedByOtherRecCte();
    boolean that_present_is_used_by_other_rec_cte = true && that.isSetIsUsedByOtherRecCte();
    if (this_present_is_used_by_other_rec_cte || that_present_is_used_by_other_rec_cte) {
      if (!(this_present_is_used_by_other_rec_cte && that_present_is_used_by_other_rec_cte))
        return false;
      if (this.is_used_by_other_rec_cte != that.is_used_by_other_rec_cte)
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    int hashCode = 1;

    hashCode = hashCode * 8191 + ((isSetIsUnionAll()) ? 131071 : 524287);
    if (isSetIsUnionAll())
      hashCode = hashCode * 8191 + ((is_union_all) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetTargets()) ? 131071 : 524287);
    if (isSetTargets())
      hashCode = hashCode * 8191 + targets.hashCode();

    hashCode = hashCode * 8191 + ((isSetFragmentsToReset()) ? 131071 : 524287);
    if (isSetFragmentsToReset())
      hashCode = hashCode * 8191 + fragments_to_reset.hashCode();

    hashCode = hashCode * 8191 + ((isSetResultExprLists()) ? 131071 : 524287);
    if (isSetResultExprLists())
      hashCode = hashCode * 8191 + result_expr_lists.hashCode();

    hashCode = hashCode * 8191 + ((isSetRecSideRuntimeFilterIds()) ? 131071 : 524287);
    if (isSetRecSideRuntimeFilterIds())
      hashCode = hashCode * 8191 + rec_side_runtime_filter_ids.hashCode();

    hashCode = hashCode * 8191 + ((isSetIsUsedByOtherRecCte()) ? 131071 : 524287);
    if (isSetIsUsedByOtherRecCte())
      hashCode = hashCode * 8191 + ((is_used_by_other_rec_cte) ? 131071 : 524287);

    return hashCode;
  }

  @Override
  public int compareTo(TRecCTENode other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = java.lang.Boolean.compare(isSetIsUnionAll(), other.isSetIsUnionAll());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIsUnionAll()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.is_union_all, other.is_union_all);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetTargets(), other.isSetTargets());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTargets()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.targets, other.targets);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetFragmentsToReset(), other.isSetFragmentsToReset());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetFragmentsToReset()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.fragments_to_reset, other.fragments_to_reset);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetResultExprLists(), other.isSetResultExprLists());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetResultExprLists()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.result_expr_lists, other.result_expr_lists);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetRecSideRuntimeFilterIds(), other.isSetRecSideRuntimeFilterIds());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRecSideRuntimeFilterIds()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rec_side_runtime_filter_ids, other.rec_side_runtime_filter_ids);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetIsUsedByOtherRecCte(), other.isSetIsUsedByOtherRecCte());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIsUsedByOtherRecCte()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.is_used_by_other_rec_cte, other.is_used_by_other_rec_cte);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  @org.apache.thrift.annotation.Nullable
  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    scheme(iprot).read(iprot, this);
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    scheme(oprot).write(oprot, this);
  }

  @Override
  public java.lang.String toString() {
    java.lang.StringBuilder sb = new java.lang.StringBuilder("TRecCTENode(");
    boolean first = true;

    if (isSetIsUnionAll()) {
      sb.append("is_union_all:");
      sb.append(this.is_union_all);
      first = false;
    }
    if (isSetTargets()) {
      if (!first) sb.append(", ");
      sb.append("targets:");
      if (this.targets == null) {
        sb.append("null");
      } else {
        sb.append(this.targets);
      }
      first = false;
    }
    if (isSetFragmentsToReset()) {
      if (!first) sb.append(", ");
      sb.append("fragments_to_reset:");
      if (this.fragments_to_reset == null) {
        sb.append("null");
      } else {
        sb.append(this.fragments_to_reset);
      }
      first = false;
    }
    if (isSetResultExprLists()) {
      if (!first) sb.append(", ");
      sb.append("result_expr_lists:");
      if (this.result_expr_lists == null) {
        sb.append("null");
      } else {
        sb.append(this.result_expr_lists);
      }
      first = false;
    }
    if (isSetRecSideRuntimeFilterIds()) {
      if (!first) sb.append(", ");
      sb.append("rec_side_runtime_filter_ids:");
      if (this.rec_side_runtime_filter_ids == null) {
        sb.append("null");
      } else {
        sb.append(this.rec_side_runtime_filter_ids);
      }
      first = false;
    }
    if (isSetIsUsedByOtherRecCte()) {
      if (!first) sb.append(", ");
      sb.append("is_used_by_other_rec_cte:");
      sb.append(this.is_used_by_other_rec_cte);
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    // check for sub-struct validity
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
    try {
      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
      __isset_bitfield = 0;
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class TRecCTENodeStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public TRecCTENodeStandardScheme getScheme() {
      return new TRecCTENodeStandardScheme();
    }
  }

  private static class TRecCTENodeStandardScheme extends org.apache.thrift.scheme.StandardScheme<TRecCTENode> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, TRecCTENode struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
          break;
        }
        switch (schemeField.id) {
          case 1: // IS_UNION_ALL
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.is_union_all = iprot.readBool();
              struct.setIsUnionAllIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // TARGETS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list464 = iprot.readListBegin();
                struct.targets = new java.util.ArrayList<TRecCTETarget>(_list464.size);
                @org.apache.thrift.annotation.Nullable TRecCTETarget _elem465;
                for (int _i466 = 0; _i466 < _list464.size; ++_i466)
                {
                  _elem465 = new TRecCTETarget();
                  _elem465.read(iprot);
                  struct.targets.add(_elem465);
                }
                iprot.readListEnd();
              }
              struct.setTargetsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // FRAGMENTS_TO_RESET
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list467 = iprot.readListBegin();
                struct.fragments_to_reset = new java.util.ArrayList<TRecCTEResetInfo>(_list467.size);
                @org.apache.thrift.annotation.Nullable TRecCTEResetInfo _elem468;
                for (int _i469 = 0; _i469 < _list467.size; ++_i469)
                {
                  _elem468 = new TRecCTEResetInfo();
                  _elem468.read(iprot);
                  struct.fragments_to_reset.add(_elem468);
                }
                iprot.readListEnd();
              }
              struct.setFragmentsToResetIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // RESULT_EXPR_LISTS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list470 = iprot.readListBegin();
                struct.result_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(_list470.size);
                @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> _elem471;
                for (int _i472 = 0; _i472 < _list470.size; ++_i472)
                {
                  {
                    org.apache.thrift.protocol.TList _list473 = iprot.readListBegin();
                    _elem471 = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list473.size);
                    @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem474;
                    for (int _i475 = 0; _i475 < _list473.size; ++_i475)
                    {
                      _elem474 = new org.apache.doris.thrift.TExpr();
                      _elem474.read(iprot);
                      _elem471.add(_elem474);
                    }
                    iprot.readListEnd();
                  }
                  struct.result_expr_lists.add(_elem471);
                }
                iprot.readListEnd();
              }
              struct.setResultExprListsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // REC_SIDE_RUNTIME_FILTER_IDS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list476 = iprot.readListBegin();
                struct.rec_side_runtime_filter_ids = new java.util.ArrayList<java.lang.Integer>(_list476.size);
                int _elem477;
                for (int _i478 = 0; _i478 < _list476.size; ++_i478)
                {
                  _elem477 = iprot.readI32();
                  struct.rec_side_runtime_filter_ids.add(_elem477);
                }
                iprot.readListEnd();
              }
              struct.setRecSideRuntimeFilterIdsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // IS_USED_BY_OTHER_REC_CTE
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.is_used_by_other_rec_cte = iprot.readBool();
              struct.setIsUsedByOtherRecCteIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();

      // check for required fields of primitive type, which can't be checked in the validate method
      struct.validate();
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot, TRecCTENode struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.isSetIsUnionAll()) {
        oprot.writeFieldBegin(IS_UNION_ALL_FIELD_DESC);
        oprot.writeBool(struct.is_union_all);
        oprot.writeFieldEnd();
      }
      if (struct.targets != null) {
        if (struct.isSetTargets()) {
          oprot.writeFieldBegin(TARGETS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.targets.size()));
            for (TRecCTETarget _iter479 : struct.targets)
            {
              _iter479.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.fragments_to_reset != null) {
        if (struct.isSetFragmentsToReset()) {
          oprot.writeFieldBegin(FRAGMENTS_TO_RESET_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.fragments_to_reset.size()));
            for (TRecCTEResetInfo _iter480 : struct.fragments_to_reset)
            {
              _iter480.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.result_expr_lists != null) {
        if (struct.isSetResultExprLists()) {
          oprot.writeFieldBegin(RESULT_EXPR_LISTS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.LIST, struct.result_expr_lists.size()));
            for (java.util.List<org.apache.doris.thrift.TExpr> _iter481 : struct.result_expr_lists)
            {
              {
                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter481.size()));
                for (org.apache.doris.thrift.TExpr _iter482 : _iter481)
                {
                  _iter482.write(oprot);
                }
                oprot.writeListEnd();
              }
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.rec_side_runtime_filter_ids != null) {
        if (struct.isSetRecSideRuntimeFilterIds()) {
          oprot.writeFieldBegin(REC_SIDE_RUNTIME_FILTER_IDS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.rec_side_runtime_filter_ids.size()));
            for (int _iter483 : struct.rec_side_runtime_filter_ids)
            {
              oprot.writeI32(_iter483);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetIsUsedByOtherRecCte()) {
        oprot.writeFieldBegin(IS_USED_BY_OTHER_REC_CTE_FIELD_DESC);
        oprot.writeBool(struct.is_used_by_other_rec_cte);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class TRecCTENodeTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public TRecCTENodeTupleScheme getScheme() {
      return new TRecCTENodeTupleScheme();
    }
  }

  private static class TRecCTENodeTupleScheme extends org.apache.thrift.scheme.TupleScheme<TRecCTENode> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, TRecCTENode struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      java.util.BitSet optionals = new java.util.BitSet();
      if (struct.isSetIsUnionAll()) {
        optionals.set(0);
      }
      if (struct.isSetTargets()) {
        optionals.set(1);
      }
      if (struct.isSetFragmentsToReset()) {
        optionals.set(2);
      }
      if (struct.isSetResultExprLists()) {
        optionals.set(3);
      }
      if (struct.isSetRecSideRuntimeFilterIds()) {
        optionals.set(4);
      }
      if (struct.isSetIsUsedByOtherRecCte()) {
        optionals.set(5);
      }
      oprot.writeBitSet(optionals, 6);
      if (struct.isSetIsUnionAll()) {
        oprot.writeBool(struct.is_union_all);
      }
      if (struct.isSetTargets()) {
        {
          oprot.writeI32(struct.targets.size());
          for (TRecCTETarget _iter484 : struct.targets)
          {
            _iter484.write(oprot);
          }
        }
      }
      if (struct.isSetFragmentsToReset()) {
        {
          oprot.writeI32(struct.fragments_to_reset.size());
          for (TRecCTEResetInfo _iter485 : struct.fragments_to_reset)
          {
            _iter485.write(oprot);
          }
        }
      }
      if (struct.isSetResultExprLists()) {
        {
          oprot.writeI32(struct.result_expr_lists.size());
          for (java.util.List<org.apache.doris.thrift.TExpr> _iter486 : struct.result_expr_lists)
          {
            {
              oprot.writeI32(_iter486.size());
              for (org.apache.doris.thrift.TExpr _iter487 : _iter486)
              {
                _iter487.write(oprot);
              }
            }
          }
        }
      }
      if (struct.isSetRecSideRuntimeFilterIds()) {
        {
          oprot.writeI32(struct.rec_side_runtime_filter_ids.size());
          for (int _iter488 : struct.rec_side_runtime_filter_ids)
          {
            oprot.writeI32(_iter488);
          }
        }
      }
      if (struct.isSetIsUsedByOtherRecCte()) {
        oprot.writeBool(struct.is_used_by_other_rec_cte);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, TRecCTENode struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      java.util.BitSet incoming = iprot.readBitSet(6);
      if (incoming.get(0)) {
        struct.is_union_all = iprot.readBool();
        struct.setIsUnionAllIsSet(true);
      }
      if (incoming.get(1)) {
        {
          org.apache.thrift.protocol.TList _list489 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
          struct.targets = new java.util.ArrayList<TRecCTETarget>(_list489.size);
          @org.apache.thrift.annotation.Nullable TRecCTETarget _elem490;
          for (int _i491 = 0; _i491 < _list489.size; ++_i491)
          {
            _elem490 = new TRecCTETarget();
            _elem490.read(iprot);
            struct.targets.add(_elem490);
          }
        }
        struct.setTargetsIsSet(true);
      }
      if (incoming.get(2)) {
        {
          org.apache.thrift.protocol.TList _list492 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
          struct.fragments_to_reset = new java.util.ArrayList<TRecCTEResetInfo>(_list492.size);
          @org.apache.thrift.annotation.Nullable TRecCTEResetInfo _elem493;
          for (int _i494 = 0; _i494 < _list492.size; ++_i494)
          {
            _elem493 = new TRecCTEResetInfo();
            _elem493.read(iprot);
            struct.fragments_to_reset.add(_elem493);
          }
        }
        struct.setFragmentsToResetIsSet(true);
      }
      if (incoming.get(3)) {
        {
          org.apache.thrift.protocol.TList _list495 = iprot.readListBegin(org.apache.thrift.protocol.TType.LIST);
          struct.result_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(_list495.size);
          @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> _elem496;
          for (int _i497 = 0; _i497 < _list495.size; ++_i497)
          {
            {
              org.apache.thrift.protocol.TList _list498 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
              _elem496 = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list498.size);
              @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem499;
              for (int _i500 = 0; _i500 < _list498.size; ++_i500)
              {
                _elem499 = new org.apache.doris.thrift.TExpr();
                _elem499.read(iprot);
                _elem496.add(_elem499);
              }
            }
            struct.result_expr_lists.add(_elem496);
          }
        }
        struct.setResultExprListsIsSet(true);
      }
      if (incoming.get(4)) {
        {
          org.apache.thrift.protocol.TList _list501 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
          struct.rec_side_runtime_filter_ids = new java.util.ArrayList<java.lang.Integer>(_list501.size);
          int _elem502;
          for (int _i503 = 0; _i503 < _list501.size; ++_i503)
          {
            _elem502 = iprot.readI32();
            struct.rec_side_runtime_filter_ids.add(_elem502);
          }
        }
        struct.setRecSideRuntimeFilterIdsIsSet(true);
      }
      if (incoming.get(5)) {
        struct.is_used_by_other_rec_cte = iprot.readBool();
        struct.setIsUsedByOtherRecCteIsSet(true);
      }
    }
  }

  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
  }
}