TPlanNode.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 TPlanNode implements org.apache.thrift.TBase<TPlanNode, TPlanNode._Fields>, java.io.Serializable, Cloneable, Comparable<TPlanNode> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TPlanNode");

  private static final org.apache.thrift.protocol.TField NODE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("node_id", org.apache.thrift.protocol.TType.I32, (short)1);
  private static final org.apache.thrift.protocol.TField NODE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("node_type", org.apache.thrift.protocol.TType.I32, (short)2);
  private static final org.apache.thrift.protocol.TField NUM_CHILDREN_FIELD_DESC = new org.apache.thrift.protocol.TField("num_children", org.apache.thrift.protocol.TType.I32, (short)3);
  private static final org.apache.thrift.protocol.TField LIMIT_FIELD_DESC = new org.apache.thrift.protocol.TField("limit", org.apache.thrift.protocol.TType.I64, (short)4);
  private static final org.apache.thrift.protocol.TField ROW_TUPLES_FIELD_DESC = new org.apache.thrift.protocol.TField("row_tuples", org.apache.thrift.protocol.TType.LIST, (short)5);
  private static final org.apache.thrift.protocol.TField NULLABLE_TUPLES_FIELD_DESC = new org.apache.thrift.protocol.TField("nullable_tuples", org.apache.thrift.protocol.TType.LIST, (short)6);
  private static final org.apache.thrift.protocol.TField CONJUNCTS_FIELD_DESC = new org.apache.thrift.protocol.TField("conjuncts", org.apache.thrift.protocol.TType.LIST, (short)7);
  private static final org.apache.thrift.protocol.TField COMPACT_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("compact_data", org.apache.thrift.protocol.TType.BOOL, (short)8);
  private static final org.apache.thrift.protocol.TField HASH_JOIN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("hash_join_node", org.apache.thrift.protocol.TType.STRUCT, (short)11);
  private static final org.apache.thrift.protocol.TField AGG_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("agg_node", org.apache.thrift.protocol.TType.STRUCT, (short)12);
  private static final org.apache.thrift.protocol.TField SORT_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("sort_node", org.apache.thrift.protocol.TType.STRUCT, (short)13);
  private static final org.apache.thrift.protocol.TField MERGE_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("merge_node", org.apache.thrift.protocol.TType.STRUCT, (short)14);
  private static final org.apache.thrift.protocol.TField EXCHANGE_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("exchange_node", org.apache.thrift.protocol.TType.STRUCT, (short)15);
  private static final org.apache.thrift.protocol.TField MYSQL_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("mysql_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)17);
  private static final org.apache.thrift.protocol.TField OLAP_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("olap_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)18);
  private static final org.apache.thrift.protocol.TField CSV_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("csv_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)19);
  private static final org.apache.thrift.protocol.TField BROKER_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("broker_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)20);
  private static final org.apache.thrift.protocol.TField PRE_AGG_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("pre_agg_node", org.apache.thrift.protocol.TType.STRUCT, (short)21);
  private static final org.apache.thrift.protocol.TField SCHEMA_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("schema_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)22);
  private static final org.apache.thrift.protocol.TField MERGE_JOIN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("merge_join_node", org.apache.thrift.protocol.TType.STRUCT, (short)23);
  private static final org.apache.thrift.protocol.TField META_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("meta_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)24);
  private static final org.apache.thrift.protocol.TField ANALYTIC_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("analytic_node", org.apache.thrift.protocol.TType.STRUCT, (short)25);
  private static final org.apache.thrift.protocol.TField OLAP_REWRITE_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("olap_rewrite_node", org.apache.thrift.protocol.TType.STRUCT, (short)26);
  private static final org.apache.thrift.protocol.TField UNION_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("union_node", org.apache.thrift.protocol.TType.STRUCT, (short)28);
  private static final org.apache.thrift.protocol.TField RESOURCE_PROFILE_FIELD_DESC = new org.apache.thrift.protocol.TField("resource_profile", org.apache.thrift.protocol.TType.STRUCT, (short)29);
  private static final org.apache.thrift.protocol.TField ES_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("es_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)30);
  private static final org.apache.thrift.protocol.TField REPEAT_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("repeat_node", org.apache.thrift.protocol.TType.STRUCT, (short)31);
  private static final org.apache.thrift.protocol.TField ASSERT_NUM_ROWS_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("assert_num_rows_node", org.apache.thrift.protocol.TType.STRUCT, (short)32);
  private static final org.apache.thrift.protocol.TField INTERSECT_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("intersect_node", org.apache.thrift.protocol.TType.STRUCT, (short)33);
  private static final org.apache.thrift.protocol.TField EXCEPT_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("except_node", org.apache.thrift.protocol.TType.STRUCT, (short)34);
  private static final org.apache.thrift.protocol.TField ODBC_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("odbc_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)35);
  private static final org.apache.thrift.protocol.TField RUNTIME_FILTERS_FIELD_DESC = new org.apache.thrift.protocol.TField("runtime_filters", org.apache.thrift.protocol.TType.LIST, (short)36);
  private static final org.apache.thrift.protocol.TField GROUP_COMMIT_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("group_commit_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)37);
  private static final org.apache.thrift.protocol.TField MATERIALIZATION_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("materialization_node", org.apache.thrift.protocol.TType.STRUCT, (short)38);
  private static final org.apache.thrift.protocol.TField REC_CTE_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("rec_cte_node", org.apache.thrift.protocol.TType.STRUCT, (short)39);
  private static final org.apache.thrift.protocol.TField VCONJUNCT_FIELD_DESC = new org.apache.thrift.protocol.TField("vconjunct", org.apache.thrift.protocol.TType.STRUCT, (short)40);
  private static final org.apache.thrift.protocol.TField TABLE_FUNCTION_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("table_function_node", org.apache.thrift.protocol.TType.STRUCT, (short)41);
  private static final org.apache.thrift.protocol.TField OUTPUT_SLOT_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("output_slot_ids", org.apache.thrift.protocol.TType.LIST, (short)42);
  private static final org.apache.thrift.protocol.TField DATA_GEN_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("data_gen_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)43);
  private static final org.apache.thrift.protocol.TField FILE_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("file_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)44);
  private static final org.apache.thrift.protocol.TField JDBC_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("jdbc_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)45);
  private static final org.apache.thrift.protocol.TField NESTED_LOOP_JOIN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("nested_loop_join_node", org.apache.thrift.protocol.TType.STRUCT, (short)46);
  private static final org.apache.thrift.protocol.TField TEST_EXTERNAL_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("test_external_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)47);
  private static final org.apache.thrift.protocol.TField PUSH_DOWN_AGG_TYPE_OPT_FIELD_DESC = new org.apache.thrift.protocol.TField("push_down_agg_type_opt", org.apache.thrift.protocol.TType.I32, (short)48);
  private static final org.apache.thrift.protocol.TField PUSH_DOWN_COUNT_FIELD_DESC = new org.apache.thrift.protocol.TField("push_down_count", org.apache.thrift.protocol.TType.I64, (short)49);
  private static final org.apache.thrift.protocol.TField DISTRIBUTE_EXPR_LISTS_FIELD_DESC = new org.apache.thrift.protocol.TField("distribute_expr_lists", org.apache.thrift.protocol.TType.LIST, (short)50);
  private static final org.apache.thrift.protocol.TField IS_SERIAL_OPERATOR_FIELD_DESC = new org.apache.thrift.protocol.TField("is_serial_operator", org.apache.thrift.protocol.TType.BOOL, (short)51);
  private static final org.apache.thrift.protocol.TField REC_CTE_SCAN_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("rec_cte_scan_node", org.apache.thrift.protocol.TType.STRUCT, (short)52);
  private static final org.apache.thrift.protocol.TField PROJECTIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("projections", org.apache.thrift.protocol.TType.LIST, (short)101);
  private static final org.apache.thrift.protocol.TField OUTPUT_TUPLE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("output_tuple_id", org.apache.thrift.protocol.TType.I32, (short)102);
  private static final org.apache.thrift.protocol.TField PARTITION_SORT_NODE_FIELD_DESC = new org.apache.thrift.protocol.TField("partition_sort_node", org.apache.thrift.protocol.TType.STRUCT, (short)103);
  private static final org.apache.thrift.protocol.TField INTERMEDIATE_PROJECTIONS_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("intermediate_projections_list", org.apache.thrift.protocol.TType.LIST, (short)104);
  private static final org.apache.thrift.protocol.TField INTERMEDIATE_OUTPUT_TUPLE_ID_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("intermediate_output_tuple_id_list", org.apache.thrift.protocol.TType.LIST, (short)105);
  private static final org.apache.thrift.protocol.TField TOPN_FILTER_SOURCE_NODE_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("topn_filter_source_node_ids", org.apache.thrift.protocol.TType.LIST, (short)106);
  private static final org.apache.thrift.protocol.TField NEREIDS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("nereids_id", org.apache.thrift.protocol.TType.I32, (short)107);

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

  public int node_id; // required
  /**
   * 
   * @see TPlanNodeType
   */
  public @org.apache.thrift.annotation.Nullable TPlanNodeType node_type; // required
  public int num_children; // required
  public long limit; // required
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> row_tuples; // required
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Boolean> nullable_tuples; // required
  public @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> conjuncts; // optional
  public boolean compact_data; // required
  public @org.apache.thrift.annotation.Nullable THashJoinNode hash_join_node; // optional
  public @org.apache.thrift.annotation.Nullable TAggregationNode agg_node; // optional
  public @org.apache.thrift.annotation.Nullable TSortNode sort_node; // optional
  public @org.apache.thrift.annotation.Nullable TMergeNode merge_node; // optional
  public @org.apache.thrift.annotation.Nullable TExchangeNode exchange_node; // optional
  public @org.apache.thrift.annotation.Nullable TMySQLScanNode mysql_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TOlapScanNode olap_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TCsvScanNode csv_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TBrokerScanNode broker_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TPreAggregationNode pre_agg_node; // optional
  public @org.apache.thrift.annotation.Nullable TSchemaScanNode schema_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TMergeJoinNode merge_join_node; // optional
  public @org.apache.thrift.annotation.Nullable TMetaScanNode meta_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TAnalyticNode analytic_node; // optional
  public @org.apache.thrift.annotation.Nullable TOlapRewriteNode olap_rewrite_node; // optional
  public @org.apache.thrift.annotation.Nullable TUnionNode union_node; // optional
  public @org.apache.thrift.annotation.Nullable TBackendResourceProfile resource_profile; // optional
  public @org.apache.thrift.annotation.Nullable TEsScanNode es_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TRepeatNode repeat_node; // optional
  public @org.apache.thrift.annotation.Nullable TAssertNumRowsNode assert_num_rows_node; // optional
  public @org.apache.thrift.annotation.Nullable TIntersectNode intersect_node; // optional
  public @org.apache.thrift.annotation.Nullable TExceptNode except_node; // optional
  public @org.apache.thrift.annotation.Nullable TOdbcScanNode odbc_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<TRuntimeFilterDesc> runtime_filters; // optional
  public @org.apache.thrift.annotation.Nullable TGroupCommitScanNode group_commit_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TMaterializationNode materialization_node; // optional
  public @org.apache.thrift.annotation.Nullable TRecCTENode rec_cte_node; // optional
  public @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr vconjunct; // optional
  public @org.apache.thrift.annotation.Nullable TTableFunctionNode table_function_node; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> output_slot_ids; // optional
  public @org.apache.thrift.annotation.Nullable TDataGenScanNode data_gen_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TFileScanNode file_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TJdbcScanNode jdbc_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable TNestedLoopJoinNode nested_loop_join_node; // optional
  public @org.apache.thrift.annotation.Nullable TTestExternalScanNode test_external_scan_node; // optional
  /**
   * 
   * @see TPushAggOp
   */
  public @org.apache.thrift.annotation.Nullable TPushAggOp push_down_agg_type_opt; // optional
  public long push_down_count; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> distribute_expr_lists; // optional
  public boolean is_serial_operator; // optional
  public @org.apache.thrift.annotation.Nullable TRecCTEScanNode rec_cte_scan_node; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> projections; // optional
  public int output_tuple_id; // optional
  public @org.apache.thrift.annotation.Nullable TPartitionSortNode partition_sort_node; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> intermediate_projections_list; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> intermediate_output_tuple_id_list; // optional
  public @org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> topn_filter_source_node_ids; // optional
  public int nereids_id; // 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 {
    NODE_ID((short)1, "node_id"),
    /**
     * 
     * @see TPlanNodeType
     */
    NODE_TYPE((short)2, "node_type"),
    NUM_CHILDREN((short)3, "num_children"),
    LIMIT((short)4, "limit"),
    ROW_TUPLES((short)5, "row_tuples"),
    NULLABLE_TUPLES((short)6, "nullable_tuples"),
    CONJUNCTS((short)7, "conjuncts"),
    COMPACT_DATA((short)8, "compact_data"),
    HASH_JOIN_NODE((short)11, "hash_join_node"),
    AGG_NODE((short)12, "agg_node"),
    SORT_NODE((short)13, "sort_node"),
    MERGE_NODE((short)14, "merge_node"),
    EXCHANGE_NODE((short)15, "exchange_node"),
    MYSQL_SCAN_NODE((short)17, "mysql_scan_node"),
    OLAP_SCAN_NODE((short)18, "olap_scan_node"),
    CSV_SCAN_NODE((short)19, "csv_scan_node"),
    BROKER_SCAN_NODE((short)20, "broker_scan_node"),
    PRE_AGG_NODE((short)21, "pre_agg_node"),
    SCHEMA_SCAN_NODE((short)22, "schema_scan_node"),
    MERGE_JOIN_NODE((short)23, "merge_join_node"),
    META_SCAN_NODE((short)24, "meta_scan_node"),
    ANALYTIC_NODE((short)25, "analytic_node"),
    OLAP_REWRITE_NODE((short)26, "olap_rewrite_node"),
    UNION_NODE((short)28, "union_node"),
    RESOURCE_PROFILE((short)29, "resource_profile"),
    ES_SCAN_NODE((short)30, "es_scan_node"),
    REPEAT_NODE((short)31, "repeat_node"),
    ASSERT_NUM_ROWS_NODE((short)32, "assert_num_rows_node"),
    INTERSECT_NODE((short)33, "intersect_node"),
    EXCEPT_NODE((short)34, "except_node"),
    ODBC_SCAN_NODE((short)35, "odbc_scan_node"),
    RUNTIME_FILTERS((short)36, "runtime_filters"),
    GROUP_COMMIT_SCAN_NODE((short)37, "group_commit_scan_node"),
    MATERIALIZATION_NODE((short)38, "materialization_node"),
    REC_CTE_NODE((short)39, "rec_cte_node"),
    VCONJUNCT((short)40, "vconjunct"),
    TABLE_FUNCTION_NODE((short)41, "table_function_node"),
    OUTPUT_SLOT_IDS((short)42, "output_slot_ids"),
    DATA_GEN_SCAN_NODE((short)43, "data_gen_scan_node"),
    FILE_SCAN_NODE((short)44, "file_scan_node"),
    JDBC_SCAN_NODE((short)45, "jdbc_scan_node"),
    NESTED_LOOP_JOIN_NODE((short)46, "nested_loop_join_node"),
    TEST_EXTERNAL_SCAN_NODE((short)47, "test_external_scan_node"),
    /**
     * 
     * @see TPushAggOp
     */
    PUSH_DOWN_AGG_TYPE_OPT((short)48, "push_down_agg_type_opt"),
    PUSH_DOWN_COUNT((short)49, "push_down_count"),
    DISTRIBUTE_EXPR_LISTS((short)50, "distribute_expr_lists"),
    IS_SERIAL_OPERATOR((short)51, "is_serial_operator"),
    REC_CTE_SCAN_NODE((short)52, "rec_cte_scan_node"),
    PROJECTIONS((short)101, "projections"),
    OUTPUT_TUPLE_ID((short)102, "output_tuple_id"),
    PARTITION_SORT_NODE((short)103, "partition_sort_node"),
    INTERMEDIATE_PROJECTIONS_LIST((short)104, "intermediate_projections_list"),
    INTERMEDIATE_OUTPUT_TUPLE_ID_LIST((short)105, "intermediate_output_tuple_id_list"),
    TOPN_FILTER_SOURCE_NODE_IDS((short)106, "topn_filter_source_node_ids"),
    NEREIDS_ID((short)107, "nereids_id");

    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: // NODE_ID
          return NODE_ID;
        case 2: // NODE_TYPE
          return NODE_TYPE;
        case 3: // NUM_CHILDREN
          return NUM_CHILDREN;
        case 4: // LIMIT
          return LIMIT;
        case 5: // ROW_TUPLES
          return ROW_TUPLES;
        case 6: // NULLABLE_TUPLES
          return NULLABLE_TUPLES;
        case 7: // CONJUNCTS
          return CONJUNCTS;
        case 8: // COMPACT_DATA
          return COMPACT_DATA;
        case 11: // HASH_JOIN_NODE
          return HASH_JOIN_NODE;
        case 12: // AGG_NODE
          return AGG_NODE;
        case 13: // SORT_NODE
          return SORT_NODE;
        case 14: // MERGE_NODE
          return MERGE_NODE;
        case 15: // EXCHANGE_NODE
          return EXCHANGE_NODE;
        case 17: // MYSQL_SCAN_NODE
          return MYSQL_SCAN_NODE;
        case 18: // OLAP_SCAN_NODE
          return OLAP_SCAN_NODE;
        case 19: // CSV_SCAN_NODE
          return CSV_SCAN_NODE;
        case 20: // BROKER_SCAN_NODE
          return BROKER_SCAN_NODE;
        case 21: // PRE_AGG_NODE
          return PRE_AGG_NODE;
        case 22: // SCHEMA_SCAN_NODE
          return SCHEMA_SCAN_NODE;
        case 23: // MERGE_JOIN_NODE
          return MERGE_JOIN_NODE;
        case 24: // META_SCAN_NODE
          return META_SCAN_NODE;
        case 25: // ANALYTIC_NODE
          return ANALYTIC_NODE;
        case 26: // OLAP_REWRITE_NODE
          return OLAP_REWRITE_NODE;
        case 28: // UNION_NODE
          return UNION_NODE;
        case 29: // RESOURCE_PROFILE
          return RESOURCE_PROFILE;
        case 30: // ES_SCAN_NODE
          return ES_SCAN_NODE;
        case 31: // REPEAT_NODE
          return REPEAT_NODE;
        case 32: // ASSERT_NUM_ROWS_NODE
          return ASSERT_NUM_ROWS_NODE;
        case 33: // INTERSECT_NODE
          return INTERSECT_NODE;
        case 34: // EXCEPT_NODE
          return EXCEPT_NODE;
        case 35: // ODBC_SCAN_NODE
          return ODBC_SCAN_NODE;
        case 36: // RUNTIME_FILTERS
          return RUNTIME_FILTERS;
        case 37: // GROUP_COMMIT_SCAN_NODE
          return GROUP_COMMIT_SCAN_NODE;
        case 38: // MATERIALIZATION_NODE
          return MATERIALIZATION_NODE;
        case 39: // REC_CTE_NODE
          return REC_CTE_NODE;
        case 40: // VCONJUNCT
          return VCONJUNCT;
        case 41: // TABLE_FUNCTION_NODE
          return TABLE_FUNCTION_NODE;
        case 42: // OUTPUT_SLOT_IDS
          return OUTPUT_SLOT_IDS;
        case 43: // DATA_GEN_SCAN_NODE
          return DATA_GEN_SCAN_NODE;
        case 44: // FILE_SCAN_NODE
          return FILE_SCAN_NODE;
        case 45: // JDBC_SCAN_NODE
          return JDBC_SCAN_NODE;
        case 46: // NESTED_LOOP_JOIN_NODE
          return NESTED_LOOP_JOIN_NODE;
        case 47: // TEST_EXTERNAL_SCAN_NODE
          return TEST_EXTERNAL_SCAN_NODE;
        case 48: // PUSH_DOWN_AGG_TYPE_OPT
          return PUSH_DOWN_AGG_TYPE_OPT;
        case 49: // PUSH_DOWN_COUNT
          return PUSH_DOWN_COUNT;
        case 50: // DISTRIBUTE_EXPR_LISTS
          return DISTRIBUTE_EXPR_LISTS;
        case 51: // IS_SERIAL_OPERATOR
          return IS_SERIAL_OPERATOR;
        case 52: // REC_CTE_SCAN_NODE
          return REC_CTE_SCAN_NODE;
        case 101: // PROJECTIONS
          return PROJECTIONS;
        case 102: // OUTPUT_TUPLE_ID
          return OUTPUT_TUPLE_ID;
        case 103: // PARTITION_SORT_NODE
          return PARTITION_SORT_NODE;
        case 104: // INTERMEDIATE_PROJECTIONS_LIST
          return INTERMEDIATE_PROJECTIONS_LIST;
        case 105: // INTERMEDIATE_OUTPUT_TUPLE_ID_LIST
          return INTERMEDIATE_OUTPUT_TUPLE_ID_LIST;
        case 106: // TOPN_FILTER_SOURCE_NODE_IDS
          return TOPN_FILTER_SOURCE_NODE_IDS;
        case 107: // NEREIDS_ID
          return NEREIDS_ID;
        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 __NODE_ID_ISSET_ID = 0;
  private static final int __NUM_CHILDREN_ISSET_ID = 1;
  private static final int __LIMIT_ISSET_ID = 2;
  private static final int __COMPACT_DATA_ISSET_ID = 3;
  private static final int __PUSH_DOWN_COUNT_ISSET_ID = 4;
  private static final int __IS_SERIAL_OPERATOR_ISSET_ID = 5;
  private static final int __OUTPUT_TUPLE_ID_ISSET_ID = 6;
  private static final int __NEREIDS_ID_ISSET_ID = 7;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.CONJUNCTS,_Fields.HASH_JOIN_NODE,_Fields.AGG_NODE,_Fields.SORT_NODE,_Fields.MERGE_NODE,_Fields.EXCHANGE_NODE,_Fields.MYSQL_SCAN_NODE,_Fields.OLAP_SCAN_NODE,_Fields.CSV_SCAN_NODE,_Fields.BROKER_SCAN_NODE,_Fields.PRE_AGG_NODE,_Fields.SCHEMA_SCAN_NODE,_Fields.MERGE_JOIN_NODE,_Fields.META_SCAN_NODE,_Fields.ANALYTIC_NODE,_Fields.OLAP_REWRITE_NODE,_Fields.UNION_NODE,_Fields.RESOURCE_PROFILE,_Fields.ES_SCAN_NODE,_Fields.REPEAT_NODE,_Fields.ASSERT_NUM_ROWS_NODE,_Fields.INTERSECT_NODE,_Fields.EXCEPT_NODE,_Fields.ODBC_SCAN_NODE,_Fields.RUNTIME_FILTERS,_Fields.GROUP_COMMIT_SCAN_NODE,_Fields.MATERIALIZATION_NODE,_Fields.REC_CTE_NODE,_Fields.VCONJUNCT,_Fields.TABLE_FUNCTION_NODE,_Fields.OUTPUT_SLOT_IDS,_Fields.DATA_GEN_SCAN_NODE,_Fields.FILE_SCAN_NODE,_Fields.JDBC_SCAN_NODE,_Fields.NESTED_LOOP_JOIN_NODE,_Fields.TEST_EXTERNAL_SCAN_NODE,_Fields.PUSH_DOWN_AGG_TYPE_OPT,_Fields.PUSH_DOWN_COUNT,_Fields.DISTRIBUTE_EXPR_LISTS,_Fields.IS_SERIAL_OPERATOR,_Fields.REC_CTE_SCAN_NODE,_Fields.PROJECTIONS,_Fields.OUTPUT_TUPLE_ID,_Fields.PARTITION_SORT_NODE,_Fields.INTERMEDIATE_PROJECTIONS_LIST,_Fields.INTERMEDIATE_OUTPUT_TUPLE_ID_LIST,_Fields.TOPN_FILTER_SOURCE_NODE_IDS,_Fields.NEREIDS_ID};
  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.NODE_ID, new org.apache.thrift.meta_data.FieldMetaData("node_id", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32        , "TPlanNodeId")));
    tmpMap.put(_Fields.NODE_TYPE, new org.apache.thrift.meta_data.FieldMetaData("node_type", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, TPlanNodeType.class)));
    tmpMap.put(_Fields.NUM_CHILDREN, new org.apache.thrift.meta_data.FieldMetaData("num_children", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.LIMIT, new org.apache.thrift.meta_data.FieldMetaData("limit", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.ROW_TUPLES, new org.apache.thrift.meta_data.FieldMetaData("row_tuples", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        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            , "TTupleId"))));
    tmpMap.put(_Fields.NULLABLE_TUPLES, new org.apache.thrift.meta_data.FieldMetaData("nullable_tuples", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        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.BOOL))));
    tmpMap.put(_Fields.CONJUNCTS, new org.apache.thrift.meta_data.FieldMetaData("conjuncts", 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, org.apache.doris.thrift.TExpr.class))));
    tmpMap.put(_Fields.COMPACT_DATA, new org.apache.thrift.meta_data.FieldMetaData("compact_data", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.HASH_JOIN_NODE, new org.apache.thrift.meta_data.FieldMetaData("hash_join_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, THashJoinNode.class)));
    tmpMap.put(_Fields.AGG_NODE, new org.apache.thrift.meta_data.FieldMetaData("agg_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TAggregationNode.class)));
    tmpMap.put(_Fields.SORT_NODE, new org.apache.thrift.meta_data.FieldMetaData("sort_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TSortNode.class)));
    tmpMap.put(_Fields.MERGE_NODE, new org.apache.thrift.meta_data.FieldMetaData("merge_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TMergeNode.class)));
    tmpMap.put(_Fields.EXCHANGE_NODE, new org.apache.thrift.meta_data.FieldMetaData("exchange_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TExchangeNode.class)));
    tmpMap.put(_Fields.MYSQL_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("mysql_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TMySQLScanNode.class)));
    tmpMap.put(_Fields.OLAP_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("olap_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TOlapScanNode.class)));
    tmpMap.put(_Fields.CSV_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("csv_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TCsvScanNode.class)));
    tmpMap.put(_Fields.BROKER_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("broker_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TBrokerScanNode.class)));
    tmpMap.put(_Fields.PRE_AGG_NODE, new org.apache.thrift.meta_data.FieldMetaData("pre_agg_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TPreAggregationNode.class)));
    tmpMap.put(_Fields.SCHEMA_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("schema_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TSchemaScanNode.class)));
    tmpMap.put(_Fields.MERGE_JOIN_NODE, new org.apache.thrift.meta_data.FieldMetaData("merge_join_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TMergeJoinNode.class)));
    tmpMap.put(_Fields.META_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("meta_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TMetaScanNode.class)));
    tmpMap.put(_Fields.ANALYTIC_NODE, new org.apache.thrift.meta_data.FieldMetaData("analytic_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TAnalyticNode.class)));
    tmpMap.put(_Fields.OLAP_REWRITE_NODE, new org.apache.thrift.meta_data.FieldMetaData("olap_rewrite_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TOlapRewriteNode.class)));
    tmpMap.put(_Fields.UNION_NODE, new org.apache.thrift.meta_data.FieldMetaData("union_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TUnionNode.class)));
    tmpMap.put(_Fields.RESOURCE_PROFILE, new org.apache.thrift.meta_data.FieldMetaData("resource_profile", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TBackendResourceProfile.class)));
    tmpMap.put(_Fields.ES_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("es_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TEsScanNode.class)));
    tmpMap.put(_Fields.REPEAT_NODE, new org.apache.thrift.meta_data.FieldMetaData("repeat_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TRepeatNode.class)));
    tmpMap.put(_Fields.ASSERT_NUM_ROWS_NODE, new org.apache.thrift.meta_data.FieldMetaData("assert_num_rows_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TAssertNumRowsNode.class)));
    tmpMap.put(_Fields.INTERSECT_NODE, new org.apache.thrift.meta_data.FieldMetaData("intersect_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TIntersectNode.class)));
    tmpMap.put(_Fields.EXCEPT_NODE, new org.apache.thrift.meta_data.FieldMetaData("except_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TExceptNode.class)));
    tmpMap.put(_Fields.ODBC_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("odbc_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TOdbcScanNode.class)));
    tmpMap.put(_Fields.RUNTIME_FILTERS, new org.apache.thrift.meta_data.FieldMetaData("runtime_filters", 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, TRuntimeFilterDesc.class))));
    tmpMap.put(_Fields.GROUP_COMMIT_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("group_commit_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TGroupCommitScanNode.class)));
    tmpMap.put(_Fields.MATERIALIZATION_NODE, new org.apache.thrift.meta_data.FieldMetaData("materialization_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TMaterializationNode.class)));
    tmpMap.put(_Fields.REC_CTE_NODE, new org.apache.thrift.meta_data.FieldMetaData("rec_cte_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TRecCTENode.class)));
    tmpMap.put(_Fields.VCONJUNCT, new org.apache.thrift.meta_data.FieldMetaData("vconjunct", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.doris.thrift.TExpr.class)));
    tmpMap.put(_Fields.TABLE_FUNCTION_NODE, new org.apache.thrift.meta_data.FieldMetaData("table_function_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TTableFunctionNode.class)));
    tmpMap.put(_Fields.OUTPUT_SLOT_IDS, new org.apache.thrift.meta_data.FieldMetaData("output_slot_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            , "TSlotId"))));
    tmpMap.put(_Fields.DATA_GEN_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("data_gen_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TDataGenScanNode.class)));
    tmpMap.put(_Fields.FILE_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("file_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TFileScanNode.class)));
    tmpMap.put(_Fields.JDBC_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("jdbc_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TJdbcScanNode.class)));
    tmpMap.put(_Fields.NESTED_LOOP_JOIN_NODE, new org.apache.thrift.meta_data.FieldMetaData("nested_loop_join_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TNestedLoopJoinNode.class)));
    tmpMap.put(_Fields.TEST_EXTERNAL_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("test_external_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TTestExternalScanNode.class)));
    tmpMap.put(_Fields.PUSH_DOWN_AGG_TYPE_OPT, new org.apache.thrift.meta_data.FieldMetaData("push_down_agg_type_opt", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, TPushAggOp.class)));
    tmpMap.put(_Fields.PUSH_DOWN_COUNT, new org.apache.thrift.meta_data.FieldMetaData("push_down_count", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.DISTRIBUTE_EXPR_LISTS, new org.apache.thrift.meta_data.FieldMetaData("distribute_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.IS_SERIAL_OPERATOR, new org.apache.thrift.meta_data.FieldMetaData("is_serial_operator", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.REC_CTE_SCAN_NODE, new org.apache.thrift.meta_data.FieldMetaData("rec_cte_scan_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TRecCTEScanNode.class)));
    tmpMap.put(_Fields.PROJECTIONS, new org.apache.thrift.meta_data.FieldMetaData("projections", 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, org.apache.doris.thrift.TExpr.class))));
    tmpMap.put(_Fields.OUTPUT_TUPLE_ID, new org.apache.thrift.meta_data.FieldMetaData("output_tuple_id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32        , "TTupleId")));
    tmpMap.put(_Fields.PARTITION_SORT_NODE, new org.apache.thrift.meta_data.FieldMetaData("partition_sort_node", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TPartitionSortNode.class)));
    tmpMap.put(_Fields.INTERMEDIATE_PROJECTIONS_LIST, new org.apache.thrift.meta_data.FieldMetaData("intermediate_projections_list", 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.INTERMEDIATE_OUTPUT_TUPLE_ID_LIST, new org.apache.thrift.meta_data.FieldMetaData("intermediate_output_tuple_id_list", 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            , "TTupleId"))));
    tmpMap.put(_Fields.TOPN_FILTER_SOURCE_NODE_IDS, new org.apache.thrift.meta_data.FieldMetaData("topn_filter_source_node_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.NEREIDS_ID, new org.apache.thrift.meta_data.FieldMetaData("nereids_id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TPlanNode.class, metaDataMap);
  }

  public TPlanNode() {
  }

  public TPlanNode(
    int node_id,
    TPlanNodeType node_type,
    int num_children,
    long limit,
    java.util.List<java.lang.Integer> row_tuples,
    java.util.List<java.lang.Boolean> nullable_tuples,
    boolean compact_data)
  {
    this();
    this.node_id = node_id;
    setNodeIdIsSet(true);
    this.node_type = node_type;
    this.num_children = num_children;
    setNumChildrenIsSet(true);
    this.limit = limit;
    setLimitIsSet(true);
    this.row_tuples = row_tuples;
    this.nullable_tuples = nullable_tuples;
    this.compact_data = compact_data;
    setCompactDataIsSet(true);
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public TPlanNode(TPlanNode other) {
    __isset_bitfield = other.__isset_bitfield;
    this.node_id = other.node_id;
    if (other.isSetNodeType()) {
      this.node_type = other.node_type;
    }
    this.num_children = other.num_children;
    this.limit = other.limit;
    if (other.isSetRowTuples()) {
      java.util.List<java.lang.Integer> __this__row_tuples = new java.util.ArrayList<java.lang.Integer>(other.row_tuples.size());
      for (java.lang.Integer other_element : other.row_tuples) {
        __this__row_tuples.add(other_element);
      }
      this.row_tuples = __this__row_tuples;
    }
    if (other.isSetNullableTuples()) {
      java.util.List<java.lang.Boolean> __this__nullable_tuples = new java.util.ArrayList<java.lang.Boolean>(other.nullable_tuples);
      this.nullable_tuples = __this__nullable_tuples;
    }
    if (other.isSetConjuncts()) {
      java.util.List<org.apache.doris.thrift.TExpr> __this__conjuncts = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(other.conjuncts.size());
      for (org.apache.doris.thrift.TExpr other_element : other.conjuncts) {
        __this__conjuncts.add(new org.apache.doris.thrift.TExpr(other_element));
      }
      this.conjuncts = __this__conjuncts;
    }
    this.compact_data = other.compact_data;
    if (other.isSetHashJoinNode()) {
      this.hash_join_node = new THashJoinNode(other.hash_join_node);
    }
    if (other.isSetAggNode()) {
      this.agg_node = new TAggregationNode(other.agg_node);
    }
    if (other.isSetSortNode()) {
      this.sort_node = new TSortNode(other.sort_node);
    }
    if (other.isSetMergeNode()) {
      this.merge_node = new TMergeNode(other.merge_node);
    }
    if (other.isSetExchangeNode()) {
      this.exchange_node = new TExchangeNode(other.exchange_node);
    }
    if (other.isSetMysqlScanNode()) {
      this.mysql_scan_node = new TMySQLScanNode(other.mysql_scan_node);
    }
    if (other.isSetOlapScanNode()) {
      this.olap_scan_node = new TOlapScanNode(other.olap_scan_node);
    }
    if (other.isSetCsvScanNode()) {
      this.csv_scan_node = new TCsvScanNode(other.csv_scan_node);
    }
    if (other.isSetBrokerScanNode()) {
      this.broker_scan_node = new TBrokerScanNode(other.broker_scan_node);
    }
    if (other.isSetPreAggNode()) {
      this.pre_agg_node = new TPreAggregationNode(other.pre_agg_node);
    }
    if (other.isSetSchemaScanNode()) {
      this.schema_scan_node = new TSchemaScanNode(other.schema_scan_node);
    }
    if (other.isSetMergeJoinNode()) {
      this.merge_join_node = new TMergeJoinNode(other.merge_join_node);
    }
    if (other.isSetMetaScanNode()) {
      this.meta_scan_node = new TMetaScanNode(other.meta_scan_node);
    }
    if (other.isSetAnalyticNode()) {
      this.analytic_node = new TAnalyticNode(other.analytic_node);
    }
    if (other.isSetOlapRewriteNode()) {
      this.olap_rewrite_node = new TOlapRewriteNode(other.olap_rewrite_node);
    }
    if (other.isSetUnionNode()) {
      this.union_node = new TUnionNode(other.union_node);
    }
    if (other.isSetResourceProfile()) {
      this.resource_profile = new TBackendResourceProfile(other.resource_profile);
    }
    if (other.isSetEsScanNode()) {
      this.es_scan_node = new TEsScanNode(other.es_scan_node);
    }
    if (other.isSetRepeatNode()) {
      this.repeat_node = new TRepeatNode(other.repeat_node);
    }
    if (other.isSetAssertNumRowsNode()) {
      this.assert_num_rows_node = new TAssertNumRowsNode(other.assert_num_rows_node);
    }
    if (other.isSetIntersectNode()) {
      this.intersect_node = new TIntersectNode(other.intersect_node);
    }
    if (other.isSetExceptNode()) {
      this.except_node = new TExceptNode(other.except_node);
    }
    if (other.isSetOdbcScanNode()) {
      this.odbc_scan_node = new TOdbcScanNode(other.odbc_scan_node);
    }
    if (other.isSetRuntimeFilters()) {
      java.util.List<TRuntimeFilterDesc> __this__runtime_filters = new java.util.ArrayList<TRuntimeFilterDesc>(other.runtime_filters.size());
      for (TRuntimeFilterDesc other_element : other.runtime_filters) {
        __this__runtime_filters.add(new TRuntimeFilterDesc(other_element));
      }
      this.runtime_filters = __this__runtime_filters;
    }
    if (other.isSetGroupCommitScanNode()) {
      this.group_commit_scan_node = new TGroupCommitScanNode(other.group_commit_scan_node);
    }
    if (other.isSetMaterializationNode()) {
      this.materialization_node = new TMaterializationNode(other.materialization_node);
    }
    if (other.isSetRecCteNode()) {
      this.rec_cte_node = new TRecCTENode(other.rec_cte_node);
    }
    if (other.isSetVconjunct()) {
      this.vconjunct = new org.apache.doris.thrift.TExpr(other.vconjunct);
    }
    if (other.isSetTableFunctionNode()) {
      this.table_function_node = new TTableFunctionNode(other.table_function_node);
    }
    if (other.isSetOutputSlotIds()) {
      java.util.List<java.lang.Integer> __this__output_slot_ids = new java.util.ArrayList<java.lang.Integer>(other.output_slot_ids.size());
      for (java.lang.Integer other_element : other.output_slot_ids) {
        __this__output_slot_ids.add(other_element);
      }
      this.output_slot_ids = __this__output_slot_ids;
    }
    if (other.isSetDataGenScanNode()) {
      this.data_gen_scan_node = new TDataGenScanNode(other.data_gen_scan_node);
    }
    if (other.isSetFileScanNode()) {
      this.file_scan_node = new TFileScanNode(other.file_scan_node);
    }
    if (other.isSetJdbcScanNode()) {
      this.jdbc_scan_node = new TJdbcScanNode(other.jdbc_scan_node);
    }
    if (other.isSetNestedLoopJoinNode()) {
      this.nested_loop_join_node = new TNestedLoopJoinNode(other.nested_loop_join_node);
    }
    if (other.isSetTestExternalScanNode()) {
      this.test_external_scan_node = new TTestExternalScanNode(other.test_external_scan_node);
    }
    if (other.isSetPushDownAggTypeOpt()) {
      this.push_down_agg_type_opt = other.push_down_agg_type_opt;
    }
    this.push_down_count = other.push_down_count;
    if (other.isSetDistributeExprLists()) {
      java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> __this__distribute_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(other.distribute_expr_lists.size());
      for (java.util.List<org.apache.doris.thrift.TExpr> other_element : other.distribute_expr_lists) {
        java.util.List<org.apache.doris.thrift.TExpr> __this__distribute_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__distribute_expr_lists_copy.add(new org.apache.doris.thrift.TExpr(other_element_element));
        }
        __this__distribute_expr_lists.add(__this__distribute_expr_lists_copy);
      }
      this.distribute_expr_lists = __this__distribute_expr_lists;
    }
    this.is_serial_operator = other.is_serial_operator;
    if (other.isSetRecCteScanNode()) {
      this.rec_cte_scan_node = new TRecCTEScanNode(other.rec_cte_scan_node);
    }
    if (other.isSetProjections()) {
      java.util.List<org.apache.doris.thrift.TExpr> __this__projections = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(other.projections.size());
      for (org.apache.doris.thrift.TExpr other_element : other.projections) {
        __this__projections.add(new org.apache.doris.thrift.TExpr(other_element));
      }
      this.projections = __this__projections;
    }
    this.output_tuple_id = other.output_tuple_id;
    if (other.isSetPartitionSortNode()) {
      this.partition_sort_node = new TPartitionSortNode(other.partition_sort_node);
    }
    if (other.isSetIntermediateProjectionsList()) {
      java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> __this__intermediate_projections_list = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(other.intermediate_projections_list.size());
      for (java.util.List<org.apache.doris.thrift.TExpr> other_element : other.intermediate_projections_list) {
        java.util.List<org.apache.doris.thrift.TExpr> __this__intermediate_projections_list_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__intermediate_projections_list_copy.add(new org.apache.doris.thrift.TExpr(other_element_element));
        }
        __this__intermediate_projections_list.add(__this__intermediate_projections_list_copy);
      }
      this.intermediate_projections_list = __this__intermediate_projections_list;
    }
    if (other.isSetIntermediateOutputTupleIdList()) {
      java.util.List<java.lang.Integer> __this__intermediate_output_tuple_id_list = new java.util.ArrayList<java.lang.Integer>(other.intermediate_output_tuple_id_list.size());
      for (java.lang.Integer other_element : other.intermediate_output_tuple_id_list) {
        __this__intermediate_output_tuple_id_list.add(other_element);
      }
      this.intermediate_output_tuple_id_list = __this__intermediate_output_tuple_id_list;
    }
    if (other.isSetTopnFilterSourceNodeIds()) {
      java.util.List<java.lang.Integer> __this__topn_filter_source_node_ids = new java.util.ArrayList<java.lang.Integer>(other.topn_filter_source_node_ids);
      this.topn_filter_source_node_ids = __this__topn_filter_source_node_ids;
    }
    this.nereids_id = other.nereids_id;
  }

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

  @Override
  public void clear() {
    setNodeIdIsSet(false);
    this.node_id = 0;
    this.node_type = null;
    setNumChildrenIsSet(false);
    this.num_children = 0;
    setLimitIsSet(false);
    this.limit = 0;
    this.row_tuples = null;
    this.nullable_tuples = null;
    this.conjuncts = null;
    setCompactDataIsSet(false);
    this.compact_data = false;
    this.hash_join_node = null;
    this.agg_node = null;
    this.sort_node = null;
    this.merge_node = null;
    this.exchange_node = null;
    this.mysql_scan_node = null;
    this.olap_scan_node = null;
    this.csv_scan_node = null;
    this.broker_scan_node = null;
    this.pre_agg_node = null;
    this.schema_scan_node = null;
    this.merge_join_node = null;
    this.meta_scan_node = null;
    this.analytic_node = null;
    this.olap_rewrite_node = null;
    this.union_node = null;
    this.resource_profile = null;
    this.es_scan_node = null;
    this.repeat_node = null;
    this.assert_num_rows_node = null;
    this.intersect_node = null;
    this.except_node = null;
    this.odbc_scan_node = null;
    this.runtime_filters = null;
    this.group_commit_scan_node = null;
    this.materialization_node = null;
    this.rec_cte_node = null;
    this.vconjunct = null;
    this.table_function_node = null;
    this.output_slot_ids = null;
    this.data_gen_scan_node = null;
    this.file_scan_node = null;
    this.jdbc_scan_node = null;
    this.nested_loop_join_node = null;
    this.test_external_scan_node = null;
    this.push_down_agg_type_opt = null;
    setPushDownCountIsSet(false);
    this.push_down_count = 0;
    this.distribute_expr_lists = null;
    setIsSerialOperatorIsSet(false);
    this.is_serial_operator = false;
    this.rec_cte_scan_node = null;
    this.projections = null;
    setOutputTupleIdIsSet(false);
    this.output_tuple_id = 0;
    this.partition_sort_node = null;
    this.intermediate_projections_list = null;
    this.intermediate_output_tuple_id_list = null;
    this.topn_filter_source_node_ids = null;
    setNereidsIdIsSet(false);
    this.nereids_id = 0;
  }

  public int getNodeId() {
    return this.node_id;
  }

  public TPlanNode setNodeId(int node_id) {
    this.node_id = node_id;
    setNodeIdIsSet(true);
    return this;
  }

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

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

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

  /**
   * 
   * @see TPlanNodeType
   */
  @org.apache.thrift.annotation.Nullable
  public TPlanNodeType getNodeType() {
    return this.node_type;
  }

  /**
   * 
   * @see TPlanNodeType
   */
  public TPlanNode setNodeType(@org.apache.thrift.annotation.Nullable TPlanNodeType node_type) {
    this.node_type = node_type;
    return this;
  }

  public void unsetNodeType() {
    this.node_type = null;
  }

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

  public void setNodeTypeIsSet(boolean value) {
    if (!value) {
      this.node_type = null;
    }
  }

  public int getNumChildren() {
    return this.num_children;
  }

  public TPlanNode setNumChildren(int num_children) {
    this.num_children = num_children;
    setNumChildrenIsSet(true);
    return this;
  }

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

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

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

  public long getLimit() {
    return this.limit;
  }

  public TPlanNode setLimit(long limit) {
    this.limit = limit;
    setLimitIsSet(true);
    return this;
  }

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

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

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

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

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

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

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

  public TPlanNode setRowTuples(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> row_tuples) {
    this.row_tuples = row_tuples;
    return this;
  }

  public void unsetRowTuples() {
    this.row_tuples = null;
  }

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

  public void setRowTuplesIsSet(boolean value) {
    if (!value) {
      this.row_tuples = null;
    }
  }

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

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

  public void addToNullableTuples(boolean elem) {
    if (this.nullable_tuples == null) {
      this.nullable_tuples = new java.util.ArrayList<java.lang.Boolean>();
    }
    this.nullable_tuples.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<java.lang.Boolean> getNullableTuples() {
    return this.nullable_tuples;
  }

  public TPlanNode setNullableTuples(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Boolean> nullable_tuples) {
    this.nullable_tuples = nullable_tuples;
    return this;
  }

  public void unsetNullableTuples() {
    this.nullable_tuples = null;
  }

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

  public void setNullableTuplesIsSet(boolean value) {
    if (!value) {
      this.nullable_tuples = null;
    }
  }

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

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

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

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

  public TPlanNode setConjuncts(@org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> conjuncts) {
    this.conjuncts = conjuncts;
    return this;
  }

  public void unsetConjuncts() {
    this.conjuncts = null;
  }

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

  public void setConjunctsIsSet(boolean value) {
    if (!value) {
      this.conjuncts = null;
    }
  }

  public boolean isCompactData() {
    return this.compact_data;
  }

  public TPlanNode setCompactData(boolean compact_data) {
    this.compact_data = compact_data;
    setCompactDataIsSet(true);
    return this;
  }

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

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

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

  @org.apache.thrift.annotation.Nullable
  public THashJoinNode getHashJoinNode() {
    return this.hash_join_node;
  }

  public TPlanNode setHashJoinNode(@org.apache.thrift.annotation.Nullable THashJoinNode hash_join_node) {
    this.hash_join_node = hash_join_node;
    return this;
  }

  public void unsetHashJoinNode() {
    this.hash_join_node = null;
  }

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

  public void setHashJoinNodeIsSet(boolean value) {
    if (!value) {
      this.hash_join_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TAggregationNode getAggNode() {
    return this.agg_node;
  }

  public TPlanNode setAggNode(@org.apache.thrift.annotation.Nullable TAggregationNode agg_node) {
    this.agg_node = agg_node;
    return this;
  }

  public void unsetAggNode() {
    this.agg_node = null;
  }

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

  public void setAggNodeIsSet(boolean value) {
    if (!value) {
      this.agg_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TSortNode getSortNode() {
    return this.sort_node;
  }

  public TPlanNode setSortNode(@org.apache.thrift.annotation.Nullable TSortNode sort_node) {
    this.sort_node = sort_node;
    return this;
  }

  public void unsetSortNode() {
    this.sort_node = null;
  }

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

  public void setSortNodeIsSet(boolean value) {
    if (!value) {
      this.sort_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TMergeNode getMergeNode() {
    return this.merge_node;
  }

  public TPlanNode setMergeNode(@org.apache.thrift.annotation.Nullable TMergeNode merge_node) {
    this.merge_node = merge_node;
    return this;
  }

  public void unsetMergeNode() {
    this.merge_node = null;
  }

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

  public void setMergeNodeIsSet(boolean value) {
    if (!value) {
      this.merge_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TExchangeNode getExchangeNode() {
    return this.exchange_node;
  }

  public TPlanNode setExchangeNode(@org.apache.thrift.annotation.Nullable TExchangeNode exchange_node) {
    this.exchange_node = exchange_node;
    return this;
  }

  public void unsetExchangeNode() {
    this.exchange_node = null;
  }

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

  public void setExchangeNodeIsSet(boolean value) {
    if (!value) {
      this.exchange_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TMySQLScanNode getMysqlScanNode() {
    return this.mysql_scan_node;
  }

  public TPlanNode setMysqlScanNode(@org.apache.thrift.annotation.Nullable TMySQLScanNode mysql_scan_node) {
    this.mysql_scan_node = mysql_scan_node;
    return this;
  }

  public void unsetMysqlScanNode() {
    this.mysql_scan_node = null;
  }

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

  public void setMysqlScanNodeIsSet(boolean value) {
    if (!value) {
      this.mysql_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TOlapScanNode getOlapScanNode() {
    return this.olap_scan_node;
  }

  public TPlanNode setOlapScanNode(@org.apache.thrift.annotation.Nullable TOlapScanNode olap_scan_node) {
    this.olap_scan_node = olap_scan_node;
    return this;
  }

  public void unsetOlapScanNode() {
    this.olap_scan_node = null;
  }

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

  public void setOlapScanNodeIsSet(boolean value) {
    if (!value) {
      this.olap_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TCsvScanNode getCsvScanNode() {
    return this.csv_scan_node;
  }

  public TPlanNode setCsvScanNode(@org.apache.thrift.annotation.Nullable TCsvScanNode csv_scan_node) {
    this.csv_scan_node = csv_scan_node;
    return this;
  }

  public void unsetCsvScanNode() {
    this.csv_scan_node = null;
  }

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

  public void setCsvScanNodeIsSet(boolean value) {
    if (!value) {
      this.csv_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TBrokerScanNode getBrokerScanNode() {
    return this.broker_scan_node;
  }

  public TPlanNode setBrokerScanNode(@org.apache.thrift.annotation.Nullable TBrokerScanNode broker_scan_node) {
    this.broker_scan_node = broker_scan_node;
    return this;
  }

  public void unsetBrokerScanNode() {
    this.broker_scan_node = null;
  }

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

  public void setBrokerScanNodeIsSet(boolean value) {
    if (!value) {
      this.broker_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TPreAggregationNode getPreAggNode() {
    return this.pre_agg_node;
  }

  public TPlanNode setPreAggNode(@org.apache.thrift.annotation.Nullable TPreAggregationNode pre_agg_node) {
    this.pre_agg_node = pre_agg_node;
    return this;
  }

  public void unsetPreAggNode() {
    this.pre_agg_node = null;
  }

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

  public void setPreAggNodeIsSet(boolean value) {
    if (!value) {
      this.pre_agg_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TSchemaScanNode getSchemaScanNode() {
    return this.schema_scan_node;
  }

  public TPlanNode setSchemaScanNode(@org.apache.thrift.annotation.Nullable TSchemaScanNode schema_scan_node) {
    this.schema_scan_node = schema_scan_node;
    return this;
  }

  public void unsetSchemaScanNode() {
    this.schema_scan_node = null;
  }

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

  public void setSchemaScanNodeIsSet(boolean value) {
    if (!value) {
      this.schema_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TMergeJoinNode getMergeJoinNode() {
    return this.merge_join_node;
  }

  public TPlanNode setMergeJoinNode(@org.apache.thrift.annotation.Nullable TMergeJoinNode merge_join_node) {
    this.merge_join_node = merge_join_node;
    return this;
  }

  public void unsetMergeJoinNode() {
    this.merge_join_node = null;
  }

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

  public void setMergeJoinNodeIsSet(boolean value) {
    if (!value) {
      this.merge_join_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TMetaScanNode getMetaScanNode() {
    return this.meta_scan_node;
  }

  public TPlanNode setMetaScanNode(@org.apache.thrift.annotation.Nullable TMetaScanNode meta_scan_node) {
    this.meta_scan_node = meta_scan_node;
    return this;
  }

  public void unsetMetaScanNode() {
    this.meta_scan_node = null;
  }

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

  public void setMetaScanNodeIsSet(boolean value) {
    if (!value) {
      this.meta_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TAnalyticNode getAnalyticNode() {
    return this.analytic_node;
  }

  public TPlanNode setAnalyticNode(@org.apache.thrift.annotation.Nullable TAnalyticNode analytic_node) {
    this.analytic_node = analytic_node;
    return this;
  }

  public void unsetAnalyticNode() {
    this.analytic_node = null;
  }

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

  public void setAnalyticNodeIsSet(boolean value) {
    if (!value) {
      this.analytic_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TOlapRewriteNode getOlapRewriteNode() {
    return this.olap_rewrite_node;
  }

  public TPlanNode setOlapRewriteNode(@org.apache.thrift.annotation.Nullable TOlapRewriteNode olap_rewrite_node) {
    this.olap_rewrite_node = olap_rewrite_node;
    return this;
  }

  public void unsetOlapRewriteNode() {
    this.olap_rewrite_node = null;
  }

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

  public void setOlapRewriteNodeIsSet(boolean value) {
    if (!value) {
      this.olap_rewrite_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TUnionNode getUnionNode() {
    return this.union_node;
  }

  public TPlanNode setUnionNode(@org.apache.thrift.annotation.Nullable TUnionNode union_node) {
    this.union_node = union_node;
    return this;
  }

  public void unsetUnionNode() {
    this.union_node = null;
  }

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

  public void setUnionNodeIsSet(boolean value) {
    if (!value) {
      this.union_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TBackendResourceProfile getResourceProfile() {
    return this.resource_profile;
  }

  public TPlanNode setResourceProfile(@org.apache.thrift.annotation.Nullable TBackendResourceProfile resource_profile) {
    this.resource_profile = resource_profile;
    return this;
  }

  public void unsetResourceProfile() {
    this.resource_profile = null;
  }

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

  public void setResourceProfileIsSet(boolean value) {
    if (!value) {
      this.resource_profile = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TEsScanNode getEsScanNode() {
    return this.es_scan_node;
  }

  public TPlanNode setEsScanNode(@org.apache.thrift.annotation.Nullable TEsScanNode es_scan_node) {
    this.es_scan_node = es_scan_node;
    return this;
  }

  public void unsetEsScanNode() {
    this.es_scan_node = null;
  }

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

  public void setEsScanNodeIsSet(boolean value) {
    if (!value) {
      this.es_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TRepeatNode getRepeatNode() {
    return this.repeat_node;
  }

  public TPlanNode setRepeatNode(@org.apache.thrift.annotation.Nullable TRepeatNode repeat_node) {
    this.repeat_node = repeat_node;
    return this;
  }

  public void unsetRepeatNode() {
    this.repeat_node = null;
  }

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

  public void setRepeatNodeIsSet(boolean value) {
    if (!value) {
      this.repeat_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TAssertNumRowsNode getAssertNumRowsNode() {
    return this.assert_num_rows_node;
  }

  public TPlanNode setAssertNumRowsNode(@org.apache.thrift.annotation.Nullable TAssertNumRowsNode assert_num_rows_node) {
    this.assert_num_rows_node = assert_num_rows_node;
    return this;
  }

  public void unsetAssertNumRowsNode() {
    this.assert_num_rows_node = null;
  }

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

  public void setAssertNumRowsNodeIsSet(boolean value) {
    if (!value) {
      this.assert_num_rows_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TIntersectNode getIntersectNode() {
    return this.intersect_node;
  }

  public TPlanNode setIntersectNode(@org.apache.thrift.annotation.Nullable TIntersectNode intersect_node) {
    this.intersect_node = intersect_node;
    return this;
  }

  public void unsetIntersectNode() {
    this.intersect_node = null;
  }

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

  public void setIntersectNodeIsSet(boolean value) {
    if (!value) {
      this.intersect_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TExceptNode getExceptNode() {
    return this.except_node;
  }

  public TPlanNode setExceptNode(@org.apache.thrift.annotation.Nullable TExceptNode except_node) {
    this.except_node = except_node;
    return this;
  }

  public void unsetExceptNode() {
    this.except_node = null;
  }

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

  public void setExceptNodeIsSet(boolean value) {
    if (!value) {
      this.except_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TOdbcScanNode getOdbcScanNode() {
    return this.odbc_scan_node;
  }

  public TPlanNode setOdbcScanNode(@org.apache.thrift.annotation.Nullable TOdbcScanNode odbc_scan_node) {
    this.odbc_scan_node = odbc_scan_node;
    return this;
  }

  public void unsetOdbcScanNode() {
    this.odbc_scan_node = null;
  }

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

  public void setOdbcScanNodeIsSet(boolean value) {
    if (!value) {
      this.odbc_scan_node = null;
    }
  }

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

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

  public void addToRuntimeFilters(TRuntimeFilterDesc elem) {
    if (this.runtime_filters == null) {
      this.runtime_filters = new java.util.ArrayList<TRuntimeFilterDesc>();
    }
    this.runtime_filters.add(elem);
  }

  @org.apache.thrift.annotation.Nullable
  public java.util.List<TRuntimeFilterDesc> getRuntimeFilters() {
    return this.runtime_filters;
  }

  public TPlanNode setRuntimeFilters(@org.apache.thrift.annotation.Nullable java.util.List<TRuntimeFilterDesc> runtime_filters) {
    this.runtime_filters = runtime_filters;
    return this;
  }

  public void unsetRuntimeFilters() {
    this.runtime_filters = null;
  }

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

  public void setRuntimeFiltersIsSet(boolean value) {
    if (!value) {
      this.runtime_filters = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TGroupCommitScanNode getGroupCommitScanNode() {
    return this.group_commit_scan_node;
  }

  public TPlanNode setGroupCommitScanNode(@org.apache.thrift.annotation.Nullable TGroupCommitScanNode group_commit_scan_node) {
    this.group_commit_scan_node = group_commit_scan_node;
    return this;
  }

  public void unsetGroupCommitScanNode() {
    this.group_commit_scan_node = null;
  }

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

  public void setGroupCommitScanNodeIsSet(boolean value) {
    if (!value) {
      this.group_commit_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TMaterializationNode getMaterializationNode() {
    return this.materialization_node;
  }

  public TPlanNode setMaterializationNode(@org.apache.thrift.annotation.Nullable TMaterializationNode materialization_node) {
    this.materialization_node = materialization_node;
    return this;
  }

  public void unsetMaterializationNode() {
    this.materialization_node = null;
  }

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

  public void setMaterializationNodeIsSet(boolean value) {
    if (!value) {
      this.materialization_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TRecCTENode getRecCteNode() {
    return this.rec_cte_node;
  }

  public TPlanNode setRecCteNode(@org.apache.thrift.annotation.Nullable TRecCTENode rec_cte_node) {
    this.rec_cte_node = rec_cte_node;
    return this;
  }

  public void unsetRecCteNode() {
    this.rec_cte_node = null;
  }

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

  public void setRecCteNodeIsSet(boolean value) {
    if (!value) {
      this.rec_cte_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public org.apache.doris.thrift.TExpr getVconjunct() {
    return this.vconjunct;
  }

  public TPlanNode setVconjunct(@org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr vconjunct) {
    this.vconjunct = vconjunct;
    return this;
  }

  public void unsetVconjunct() {
    this.vconjunct = null;
  }

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

  public void setVconjunctIsSet(boolean value) {
    if (!value) {
      this.vconjunct = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TTableFunctionNode getTableFunctionNode() {
    return this.table_function_node;
  }

  public TPlanNode setTableFunctionNode(@org.apache.thrift.annotation.Nullable TTableFunctionNode table_function_node) {
    this.table_function_node = table_function_node;
    return this;
  }

  public void unsetTableFunctionNode() {
    this.table_function_node = null;
  }

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

  public void setTableFunctionNodeIsSet(boolean value) {
    if (!value) {
      this.table_function_node = null;
    }
  }

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

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

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

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

  public TPlanNode setOutputSlotIds(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> output_slot_ids) {
    this.output_slot_ids = output_slot_ids;
    return this;
  }

  public void unsetOutputSlotIds() {
    this.output_slot_ids = null;
  }

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

  public void setOutputSlotIdsIsSet(boolean value) {
    if (!value) {
      this.output_slot_ids = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TDataGenScanNode getDataGenScanNode() {
    return this.data_gen_scan_node;
  }

  public TPlanNode setDataGenScanNode(@org.apache.thrift.annotation.Nullable TDataGenScanNode data_gen_scan_node) {
    this.data_gen_scan_node = data_gen_scan_node;
    return this;
  }

  public void unsetDataGenScanNode() {
    this.data_gen_scan_node = null;
  }

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

  public void setDataGenScanNodeIsSet(boolean value) {
    if (!value) {
      this.data_gen_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TFileScanNode getFileScanNode() {
    return this.file_scan_node;
  }

  public TPlanNode setFileScanNode(@org.apache.thrift.annotation.Nullable TFileScanNode file_scan_node) {
    this.file_scan_node = file_scan_node;
    return this;
  }

  public void unsetFileScanNode() {
    this.file_scan_node = null;
  }

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

  public void setFileScanNodeIsSet(boolean value) {
    if (!value) {
      this.file_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TJdbcScanNode getJdbcScanNode() {
    return this.jdbc_scan_node;
  }

  public TPlanNode setJdbcScanNode(@org.apache.thrift.annotation.Nullable TJdbcScanNode jdbc_scan_node) {
    this.jdbc_scan_node = jdbc_scan_node;
    return this;
  }

  public void unsetJdbcScanNode() {
    this.jdbc_scan_node = null;
  }

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

  public void setJdbcScanNodeIsSet(boolean value) {
    if (!value) {
      this.jdbc_scan_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TNestedLoopJoinNode getNestedLoopJoinNode() {
    return this.nested_loop_join_node;
  }

  public TPlanNode setNestedLoopJoinNode(@org.apache.thrift.annotation.Nullable TNestedLoopJoinNode nested_loop_join_node) {
    this.nested_loop_join_node = nested_loop_join_node;
    return this;
  }

  public void unsetNestedLoopJoinNode() {
    this.nested_loop_join_node = null;
  }

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

  public void setNestedLoopJoinNodeIsSet(boolean value) {
    if (!value) {
      this.nested_loop_join_node = null;
    }
  }

  @org.apache.thrift.annotation.Nullable
  public TTestExternalScanNode getTestExternalScanNode() {
    return this.test_external_scan_node;
  }

  public TPlanNode setTestExternalScanNode(@org.apache.thrift.annotation.Nullable TTestExternalScanNode test_external_scan_node) {
    this.test_external_scan_node = test_external_scan_node;
    return this;
  }

  public void unsetTestExternalScanNode() {
    this.test_external_scan_node = null;
  }

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

  public void setTestExternalScanNodeIsSet(boolean value) {
    if (!value) {
      this.test_external_scan_node = null;
    }
  }

  /**
   * 
   * @see TPushAggOp
   */
  @org.apache.thrift.annotation.Nullable
  public TPushAggOp getPushDownAggTypeOpt() {
    return this.push_down_agg_type_opt;
  }

  /**
   * 
   * @see TPushAggOp
   */
  public TPlanNode setPushDownAggTypeOpt(@org.apache.thrift.annotation.Nullable TPushAggOp push_down_agg_type_opt) {
    this.push_down_agg_type_opt = push_down_agg_type_opt;
    return this;
  }

  public void unsetPushDownAggTypeOpt() {
    this.push_down_agg_type_opt = null;
  }

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

  public void setPushDownAggTypeOptIsSet(boolean value) {
    if (!value) {
      this.push_down_agg_type_opt = null;
    }
  }

  public long getPushDownCount() {
    return this.push_down_count;
  }

  public TPlanNode setPushDownCount(long push_down_count) {
    this.push_down_count = push_down_count;
    setPushDownCountIsSet(true);
    return this;
  }

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

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

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

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

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

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

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

  public TPlanNode setDistributeExprLists(@org.apache.thrift.annotation.Nullable java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> distribute_expr_lists) {
    this.distribute_expr_lists = distribute_expr_lists;
    return this;
  }

  public void unsetDistributeExprLists() {
    this.distribute_expr_lists = null;
  }

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

  public void setDistributeExprListsIsSet(boolean value) {
    if (!value) {
      this.distribute_expr_lists = null;
    }
  }

  public boolean isIsSerialOperator() {
    return this.is_serial_operator;
  }

  public TPlanNode setIsSerialOperator(boolean is_serial_operator) {
    this.is_serial_operator = is_serial_operator;
    setIsSerialOperatorIsSet(true);
    return this;
  }

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

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

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

  @org.apache.thrift.annotation.Nullable
  public TRecCTEScanNode getRecCteScanNode() {
    return this.rec_cte_scan_node;
  }

  public TPlanNode setRecCteScanNode(@org.apache.thrift.annotation.Nullable TRecCTEScanNode rec_cte_scan_node) {
    this.rec_cte_scan_node = rec_cte_scan_node;
    return this;
  }

  public void unsetRecCteScanNode() {
    this.rec_cte_scan_node = null;
  }

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

  public void setRecCteScanNodeIsSet(boolean value) {
    if (!value) {
      this.rec_cte_scan_node = null;
    }
  }

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

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

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

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

  public TPlanNode setProjections(@org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> projections) {
    this.projections = projections;
    return this;
  }

  public void unsetProjections() {
    this.projections = null;
  }

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

  public void setProjectionsIsSet(boolean value) {
    if (!value) {
      this.projections = null;
    }
  }

  public int getOutputTupleId() {
    return this.output_tuple_id;
  }

  public TPlanNode setOutputTupleId(int output_tuple_id) {
    this.output_tuple_id = output_tuple_id;
    setOutputTupleIdIsSet(true);
    return this;
  }

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

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

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

  @org.apache.thrift.annotation.Nullable
  public TPartitionSortNode getPartitionSortNode() {
    return this.partition_sort_node;
  }

  public TPlanNode setPartitionSortNode(@org.apache.thrift.annotation.Nullable TPartitionSortNode partition_sort_node) {
    this.partition_sort_node = partition_sort_node;
    return this;
  }

  public void unsetPartitionSortNode() {
    this.partition_sort_node = null;
  }

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

  public void setPartitionSortNodeIsSet(boolean value) {
    if (!value) {
      this.partition_sort_node = null;
    }
  }

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

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

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

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

  public TPlanNode setIntermediateProjectionsList(@org.apache.thrift.annotation.Nullable java.util.List<java.util.List<org.apache.doris.thrift.TExpr>> intermediate_projections_list) {
    this.intermediate_projections_list = intermediate_projections_list;
    return this;
  }

  public void unsetIntermediateProjectionsList() {
    this.intermediate_projections_list = null;
  }

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

  public void setIntermediateProjectionsListIsSet(boolean value) {
    if (!value) {
      this.intermediate_projections_list = null;
    }
  }

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

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

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

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

  public TPlanNode setIntermediateOutputTupleIdList(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> intermediate_output_tuple_id_list) {
    this.intermediate_output_tuple_id_list = intermediate_output_tuple_id_list;
    return this;
  }

  public void unsetIntermediateOutputTupleIdList() {
    this.intermediate_output_tuple_id_list = null;
  }

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

  public void setIntermediateOutputTupleIdListIsSet(boolean value) {
    if (!value) {
      this.intermediate_output_tuple_id_list = null;
    }
  }

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

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

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

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

  public TPlanNode setTopnFilterSourceNodeIds(@org.apache.thrift.annotation.Nullable java.util.List<java.lang.Integer> topn_filter_source_node_ids) {
    this.topn_filter_source_node_ids = topn_filter_source_node_ids;
    return this;
  }

  public void unsetTopnFilterSourceNodeIds() {
    this.topn_filter_source_node_ids = null;
  }

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

  public void setTopnFilterSourceNodeIdsIsSet(boolean value) {
    if (!value) {
      this.topn_filter_source_node_ids = null;
    }
  }

  public int getNereidsId() {
    return this.nereids_id;
  }

  public TPlanNode setNereidsId(int nereids_id) {
    this.nereids_id = nereids_id;
    setNereidsIdIsSet(true);
    return this;
  }

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

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

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

  public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable java.lang.Object value) {
    switch (field) {
    case NODE_ID:
      if (value == null) {
        unsetNodeId();
      } else {
        setNodeId((java.lang.Integer)value);
      }
      break;

    case NODE_TYPE:
      if (value == null) {
        unsetNodeType();
      } else {
        setNodeType((TPlanNodeType)value);
      }
      break;

    case NUM_CHILDREN:
      if (value == null) {
        unsetNumChildren();
      } else {
        setNumChildren((java.lang.Integer)value);
      }
      break;

    case LIMIT:
      if (value == null) {
        unsetLimit();
      } else {
        setLimit((java.lang.Long)value);
      }
      break;

    case ROW_TUPLES:
      if (value == null) {
        unsetRowTuples();
      } else {
        setRowTuples((java.util.List<java.lang.Integer>)value);
      }
      break;

    case NULLABLE_TUPLES:
      if (value == null) {
        unsetNullableTuples();
      } else {
        setNullableTuples((java.util.List<java.lang.Boolean>)value);
      }
      break;

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

    case COMPACT_DATA:
      if (value == null) {
        unsetCompactData();
      } else {
        setCompactData((java.lang.Boolean)value);
      }
      break;

    case HASH_JOIN_NODE:
      if (value == null) {
        unsetHashJoinNode();
      } else {
        setHashJoinNode((THashJoinNode)value);
      }
      break;

    case AGG_NODE:
      if (value == null) {
        unsetAggNode();
      } else {
        setAggNode((TAggregationNode)value);
      }
      break;

    case SORT_NODE:
      if (value == null) {
        unsetSortNode();
      } else {
        setSortNode((TSortNode)value);
      }
      break;

    case MERGE_NODE:
      if (value == null) {
        unsetMergeNode();
      } else {
        setMergeNode((TMergeNode)value);
      }
      break;

    case EXCHANGE_NODE:
      if (value == null) {
        unsetExchangeNode();
      } else {
        setExchangeNode((TExchangeNode)value);
      }
      break;

    case MYSQL_SCAN_NODE:
      if (value == null) {
        unsetMysqlScanNode();
      } else {
        setMysqlScanNode((TMySQLScanNode)value);
      }
      break;

    case OLAP_SCAN_NODE:
      if (value == null) {
        unsetOlapScanNode();
      } else {
        setOlapScanNode((TOlapScanNode)value);
      }
      break;

    case CSV_SCAN_NODE:
      if (value == null) {
        unsetCsvScanNode();
      } else {
        setCsvScanNode((TCsvScanNode)value);
      }
      break;

    case BROKER_SCAN_NODE:
      if (value == null) {
        unsetBrokerScanNode();
      } else {
        setBrokerScanNode((TBrokerScanNode)value);
      }
      break;

    case PRE_AGG_NODE:
      if (value == null) {
        unsetPreAggNode();
      } else {
        setPreAggNode((TPreAggregationNode)value);
      }
      break;

    case SCHEMA_SCAN_NODE:
      if (value == null) {
        unsetSchemaScanNode();
      } else {
        setSchemaScanNode((TSchemaScanNode)value);
      }
      break;

    case MERGE_JOIN_NODE:
      if (value == null) {
        unsetMergeJoinNode();
      } else {
        setMergeJoinNode((TMergeJoinNode)value);
      }
      break;

    case META_SCAN_NODE:
      if (value == null) {
        unsetMetaScanNode();
      } else {
        setMetaScanNode((TMetaScanNode)value);
      }
      break;

    case ANALYTIC_NODE:
      if (value == null) {
        unsetAnalyticNode();
      } else {
        setAnalyticNode((TAnalyticNode)value);
      }
      break;

    case OLAP_REWRITE_NODE:
      if (value == null) {
        unsetOlapRewriteNode();
      } else {
        setOlapRewriteNode((TOlapRewriteNode)value);
      }
      break;

    case UNION_NODE:
      if (value == null) {
        unsetUnionNode();
      } else {
        setUnionNode((TUnionNode)value);
      }
      break;

    case RESOURCE_PROFILE:
      if (value == null) {
        unsetResourceProfile();
      } else {
        setResourceProfile((TBackendResourceProfile)value);
      }
      break;

    case ES_SCAN_NODE:
      if (value == null) {
        unsetEsScanNode();
      } else {
        setEsScanNode((TEsScanNode)value);
      }
      break;

    case REPEAT_NODE:
      if (value == null) {
        unsetRepeatNode();
      } else {
        setRepeatNode((TRepeatNode)value);
      }
      break;

    case ASSERT_NUM_ROWS_NODE:
      if (value == null) {
        unsetAssertNumRowsNode();
      } else {
        setAssertNumRowsNode((TAssertNumRowsNode)value);
      }
      break;

    case INTERSECT_NODE:
      if (value == null) {
        unsetIntersectNode();
      } else {
        setIntersectNode((TIntersectNode)value);
      }
      break;

    case EXCEPT_NODE:
      if (value == null) {
        unsetExceptNode();
      } else {
        setExceptNode((TExceptNode)value);
      }
      break;

    case ODBC_SCAN_NODE:
      if (value == null) {
        unsetOdbcScanNode();
      } else {
        setOdbcScanNode((TOdbcScanNode)value);
      }
      break;

    case RUNTIME_FILTERS:
      if (value == null) {
        unsetRuntimeFilters();
      } else {
        setRuntimeFilters((java.util.List<TRuntimeFilterDesc>)value);
      }
      break;

    case GROUP_COMMIT_SCAN_NODE:
      if (value == null) {
        unsetGroupCommitScanNode();
      } else {
        setGroupCommitScanNode((TGroupCommitScanNode)value);
      }
      break;

    case MATERIALIZATION_NODE:
      if (value == null) {
        unsetMaterializationNode();
      } else {
        setMaterializationNode((TMaterializationNode)value);
      }
      break;

    case REC_CTE_NODE:
      if (value == null) {
        unsetRecCteNode();
      } else {
        setRecCteNode((TRecCTENode)value);
      }
      break;

    case VCONJUNCT:
      if (value == null) {
        unsetVconjunct();
      } else {
        setVconjunct((org.apache.doris.thrift.TExpr)value);
      }
      break;

    case TABLE_FUNCTION_NODE:
      if (value == null) {
        unsetTableFunctionNode();
      } else {
        setTableFunctionNode((TTableFunctionNode)value);
      }
      break;

    case OUTPUT_SLOT_IDS:
      if (value == null) {
        unsetOutputSlotIds();
      } else {
        setOutputSlotIds((java.util.List<java.lang.Integer>)value);
      }
      break;

    case DATA_GEN_SCAN_NODE:
      if (value == null) {
        unsetDataGenScanNode();
      } else {
        setDataGenScanNode((TDataGenScanNode)value);
      }
      break;

    case FILE_SCAN_NODE:
      if (value == null) {
        unsetFileScanNode();
      } else {
        setFileScanNode((TFileScanNode)value);
      }
      break;

    case JDBC_SCAN_NODE:
      if (value == null) {
        unsetJdbcScanNode();
      } else {
        setJdbcScanNode((TJdbcScanNode)value);
      }
      break;

    case NESTED_LOOP_JOIN_NODE:
      if (value == null) {
        unsetNestedLoopJoinNode();
      } else {
        setNestedLoopJoinNode((TNestedLoopJoinNode)value);
      }
      break;

    case TEST_EXTERNAL_SCAN_NODE:
      if (value == null) {
        unsetTestExternalScanNode();
      } else {
        setTestExternalScanNode((TTestExternalScanNode)value);
      }
      break;

    case PUSH_DOWN_AGG_TYPE_OPT:
      if (value == null) {
        unsetPushDownAggTypeOpt();
      } else {
        setPushDownAggTypeOpt((TPushAggOp)value);
      }
      break;

    case PUSH_DOWN_COUNT:
      if (value == null) {
        unsetPushDownCount();
      } else {
        setPushDownCount((java.lang.Long)value);
      }
      break;

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

    case IS_SERIAL_OPERATOR:
      if (value == null) {
        unsetIsSerialOperator();
      } else {
        setIsSerialOperator((java.lang.Boolean)value);
      }
      break;

    case REC_CTE_SCAN_NODE:
      if (value == null) {
        unsetRecCteScanNode();
      } else {
        setRecCteScanNode((TRecCTEScanNode)value);
      }
      break;

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

    case OUTPUT_TUPLE_ID:
      if (value == null) {
        unsetOutputTupleId();
      } else {
        setOutputTupleId((java.lang.Integer)value);
      }
      break;

    case PARTITION_SORT_NODE:
      if (value == null) {
        unsetPartitionSortNode();
      } else {
        setPartitionSortNode((TPartitionSortNode)value);
      }
      break;

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

    case INTERMEDIATE_OUTPUT_TUPLE_ID_LIST:
      if (value == null) {
        unsetIntermediateOutputTupleIdList();
      } else {
        setIntermediateOutputTupleIdList((java.util.List<java.lang.Integer>)value);
      }
      break;

    case TOPN_FILTER_SOURCE_NODE_IDS:
      if (value == null) {
        unsetTopnFilterSourceNodeIds();
      } else {
        setTopnFilterSourceNodeIds((java.util.List<java.lang.Integer>)value);
      }
      break;

    case NEREIDS_ID:
      if (value == null) {
        unsetNereidsId();
      } else {
        setNereidsId((java.lang.Integer)value);
      }
      break;

    }
  }

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

    case NODE_TYPE:
      return getNodeType();

    case NUM_CHILDREN:
      return getNumChildren();

    case LIMIT:
      return getLimit();

    case ROW_TUPLES:
      return getRowTuples();

    case NULLABLE_TUPLES:
      return getNullableTuples();

    case CONJUNCTS:
      return getConjuncts();

    case COMPACT_DATA:
      return isCompactData();

    case HASH_JOIN_NODE:
      return getHashJoinNode();

    case AGG_NODE:
      return getAggNode();

    case SORT_NODE:
      return getSortNode();

    case MERGE_NODE:
      return getMergeNode();

    case EXCHANGE_NODE:
      return getExchangeNode();

    case MYSQL_SCAN_NODE:
      return getMysqlScanNode();

    case OLAP_SCAN_NODE:
      return getOlapScanNode();

    case CSV_SCAN_NODE:
      return getCsvScanNode();

    case BROKER_SCAN_NODE:
      return getBrokerScanNode();

    case PRE_AGG_NODE:
      return getPreAggNode();

    case SCHEMA_SCAN_NODE:
      return getSchemaScanNode();

    case MERGE_JOIN_NODE:
      return getMergeJoinNode();

    case META_SCAN_NODE:
      return getMetaScanNode();

    case ANALYTIC_NODE:
      return getAnalyticNode();

    case OLAP_REWRITE_NODE:
      return getOlapRewriteNode();

    case UNION_NODE:
      return getUnionNode();

    case RESOURCE_PROFILE:
      return getResourceProfile();

    case ES_SCAN_NODE:
      return getEsScanNode();

    case REPEAT_NODE:
      return getRepeatNode();

    case ASSERT_NUM_ROWS_NODE:
      return getAssertNumRowsNode();

    case INTERSECT_NODE:
      return getIntersectNode();

    case EXCEPT_NODE:
      return getExceptNode();

    case ODBC_SCAN_NODE:
      return getOdbcScanNode();

    case RUNTIME_FILTERS:
      return getRuntimeFilters();

    case GROUP_COMMIT_SCAN_NODE:
      return getGroupCommitScanNode();

    case MATERIALIZATION_NODE:
      return getMaterializationNode();

    case REC_CTE_NODE:
      return getRecCteNode();

    case VCONJUNCT:
      return getVconjunct();

    case TABLE_FUNCTION_NODE:
      return getTableFunctionNode();

    case OUTPUT_SLOT_IDS:
      return getOutputSlotIds();

    case DATA_GEN_SCAN_NODE:
      return getDataGenScanNode();

    case FILE_SCAN_NODE:
      return getFileScanNode();

    case JDBC_SCAN_NODE:
      return getJdbcScanNode();

    case NESTED_LOOP_JOIN_NODE:
      return getNestedLoopJoinNode();

    case TEST_EXTERNAL_SCAN_NODE:
      return getTestExternalScanNode();

    case PUSH_DOWN_AGG_TYPE_OPT:
      return getPushDownAggTypeOpt();

    case PUSH_DOWN_COUNT:
      return getPushDownCount();

    case DISTRIBUTE_EXPR_LISTS:
      return getDistributeExprLists();

    case IS_SERIAL_OPERATOR:
      return isIsSerialOperator();

    case REC_CTE_SCAN_NODE:
      return getRecCteScanNode();

    case PROJECTIONS:
      return getProjections();

    case OUTPUT_TUPLE_ID:
      return getOutputTupleId();

    case PARTITION_SORT_NODE:
      return getPartitionSortNode();

    case INTERMEDIATE_PROJECTIONS_LIST:
      return getIntermediateProjectionsList();

    case INTERMEDIATE_OUTPUT_TUPLE_ID_LIST:
      return getIntermediateOutputTupleIdList();

    case TOPN_FILTER_SOURCE_NODE_IDS:
      return getTopnFilterSourceNodeIds();

    case NEREIDS_ID:
      return getNereidsId();

    }
    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 NODE_ID:
      return isSetNodeId();
    case NODE_TYPE:
      return isSetNodeType();
    case NUM_CHILDREN:
      return isSetNumChildren();
    case LIMIT:
      return isSetLimit();
    case ROW_TUPLES:
      return isSetRowTuples();
    case NULLABLE_TUPLES:
      return isSetNullableTuples();
    case CONJUNCTS:
      return isSetConjuncts();
    case COMPACT_DATA:
      return isSetCompactData();
    case HASH_JOIN_NODE:
      return isSetHashJoinNode();
    case AGG_NODE:
      return isSetAggNode();
    case SORT_NODE:
      return isSetSortNode();
    case MERGE_NODE:
      return isSetMergeNode();
    case EXCHANGE_NODE:
      return isSetExchangeNode();
    case MYSQL_SCAN_NODE:
      return isSetMysqlScanNode();
    case OLAP_SCAN_NODE:
      return isSetOlapScanNode();
    case CSV_SCAN_NODE:
      return isSetCsvScanNode();
    case BROKER_SCAN_NODE:
      return isSetBrokerScanNode();
    case PRE_AGG_NODE:
      return isSetPreAggNode();
    case SCHEMA_SCAN_NODE:
      return isSetSchemaScanNode();
    case MERGE_JOIN_NODE:
      return isSetMergeJoinNode();
    case META_SCAN_NODE:
      return isSetMetaScanNode();
    case ANALYTIC_NODE:
      return isSetAnalyticNode();
    case OLAP_REWRITE_NODE:
      return isSetOlapRewriteNode();
    case UNION_NODE:
      return isSetUnionNode();
    case RESOURCE_PROFILE:
      return isSetResourceProfile();
    case ES_SCAN_NODE:
      return isSetEsScanNode();
    case REPEAT_NODE:
      return isSetRepeatNode();
    case ASSERT_NUM_ROWS_NODE:
      return isSetAssertNumRowsNode();
    case INTERSECT_NODE:
      return isSetIntersectNode();
    case EXCEPT_NODE:
      return isSetExceptNode();
    case ODBC_SCAN_NODE:
      return isSetOdbcScanNode();
    case RUNTIME_FILTERS:
      return isSetRuntimeFilters();
    case GROUP_COMMIT_SCAN_NODE:
      return isSetGroupCommitScanNode();
    case MATERIALIZATION_NODE:
      return isSetMaterializationNode();
    case REC_CTE_NODE:
      return isSetRecCteNode();
    case VCONJUNCT:
      return isSetVconjunct();
    case TABLE_FUNCTION_NODE:
      return isSetTableFunctionNode();
    case OUTPUT_SLOT_IDS:
      return isSetOutputSlotIds();
    case DATA_GEN_SCAN_NODE:
      return isSetDataGenScanNode();
    case FILE_SCAN_NODE:
      return isSetFileScanNode();
    case JDBC_SCAN_NODE:
      return isSetJdbcScanNode();
    case NESTED_LOOP_JOIN_NODE:
      return isSetNestedLoopJoinNode();
    case TEST_EXTERNAL_SCAN_NODE:
      return isSetTestExternalScanNode();
    case PUSH_DOWN_AGG_TYPE_OPT:
      return isSetPushDownAggTypeOpt();
    case PUSH_DOWN_COUNT:
      return isSetPushDownCount();
    case DISTRIBUTE_EXPR_LISTS:
      return isSetDistributeExprLists();
    case IS_SERIAL_OPERATOR:
      return isSetIsSerialOperator();
    case REC_CTE_SCAN_NODE:
      return isSetRecCteScanNode();
    case PROJECTIONS:
      return isSetProjections();
    case OUTPUT_TUPLE_ID:
      return isSetOutputTupleId();
    case PARTITION_SORT_NODE:
      return isSetPartitionSortNode();
    case INTERMEDIATE_PROJECTIONS_LIST:
      return isSetIntermediateProjectionsList();
    case INTERMEDIATE_OUTPUT_TUPLE_ID_LIST:
      return isSetIntermediateOutputTupleIdList();
    case TOPN_FILTER_SOURCE_NODE_IDS:
      return isSetTopnFilterSourceNodeIds();
    case NEREIDS_ID:
      return isSetNereidsId();
    }
    throw new java.lang.IllegalStateException();
  }

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

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

    boolean this_present_node_id = true;
    boolean that_present_node_id = true;
    if (this_present_node_id || that_present_node_id) {
      if (!(this_present_node_id && that_present_node_id))
        return false;
      if (this.node_id != that.node_id)
        return false;
    }

    boolean this_present_node_type = true && this.isSetNodeType();
    boolean that_present_node_type = true && that.isSetNodeType();
    if (this_present_node_type || that_present_node_type) {
      if (!(this_present_node_type && that_present_node_type))
        return false;
      if (!this.node_type.equals(that.node_type))
        return false;
    }

    boolean this_present_num_children = true;
    boolean that_present_num_children = true;
    if (this_present_num_children || that_present_num_children) {
      if (!(this_present_num_children && that_present_num_children))
        return false;
      if (this.num_children != that.num_children)
        return false;
    }

    boolean this_present_limit = true;
    boolean that_present_limit = true;
    if (this_present_limit || that_present_limit) {
      if (!(this_present_limit && that_present_limit))
        return false;
      if (this.limit != that.limit)
        return false;
    }

    boolean this_present_row_tuples = true && this.isSetRowTuples();
    boolean that_present_row_tuples = true && that.isSetRowTuples();
    if (this_present_row_tuples || that_present_row_tuples) {
      if (!(this_present_row_tuples && that_present_row_tuples))
        return false;
      if (!this.row_tuples.equals(that.row_tuples))
        return false;
    }

    boolean this_present_nullable_tuples = true && this.isSetNullableTuples();
    boolean that_present_nullable_tuples = true && that.isSetNullableTuples();
    if (this_present_nullable_tuples || that_present_nullable_tuples) {
      if (!(this_present_nullable_tuples && that_present_nullable_tuples))
        return false;
      if (!this.nullable_tuples.equals(that.nullable_tuples))
        return false;
    }

    boolean this_present_conjuncts = true && this.isSetConjuncts();
    boolean that_present_conjuncts = true && that.isSetConjuncts();
    if (this_present_conjuncts || that_present_conjuncts) {
      if (!(this_present_conjuncts && that_present_conjuncts))
        return false;
      if (!this.conjuncts.equals(that.conjuncts))
        return false;
    }

    boolean this_present_compact_data = true;
    boolean that_present_compact_data = true;
    if (this_present_compact_data || that_present_compact_data) {
      if (!(this_present_compact_data && that_present_compact_data))
        return false;
      if (this.compact_data != that.compact_data)
        return false;
    }

    boolean this_present_hash_join_node = true && this.isSetHashJoinNode();
    boolean that_present_hash_join_node = true && that.isSetHashJoinNode();
    if (this_present_hash_join_node || that_present_hash_join_node) {
      if (!(this_present_hash_join_node && that_present_hash_join_node))
        return false;
      if (!this.hash_join_node.equals(that.hash_join_node))
        return false;
    }

    boolean this_present_agg_node = true && this.isSetAggNode();
    boolean that_present_agg_node = true && that.isSetAggNode();
    if (this_present_agg_node || that_present_agg_node) {
      if (!(this_present_agg_node && that_present_agg_node))
        return false;
      if (!this.agg_node.equals(that.agg_node))
        return false;
    }

    boolean this_present_sort_node = true && this.isSetSortNode();
    boolean that_present_sort_node = true && that.isSetSortNode();
    if (this_present_sort_node || that_present_sort_node) {
      if (!(this_present_sort_node && that_present_sort_node))
        return false;
      if (!this.sort_node.equals(that.sort_node))
        return false;
    }

    boolean this_present_merge_node = true && this.isSetMergeNode();
    boolean that_present_merge_node = true && that.isSetMergeNode();
    if (this_present_merge_node || that_present_merge_node) {
      if (!(this_present_merge_node && that_present_merge_node))
        return false;
      if (!this.merge_node.equals(that.merge_node))
        return false;
    }

    boolean this_present_exchange_node = true && this.isSetExchangeNode();
    boolean that_present_exchange_node = true && that.isSetExchangeNode();
    if (this_present_exchange_node || that_present_exchange_node) {
      if (!(this_present_exchange_node && that_present_exchange_node))
        return false;
      if (!this.exchange_node.equals(that.exchange_node))
        return false;
    }

    boolean this_present_mysql_scan_node = true && this.isSetMysqlScanNode();
    boolean that_present_mysql_scan_node = true && that.isSetMysqlScanNode();
    if (this_present_mysql_scan_node || that_present_mysql_scan_node) {
      if (!(this_present_mysql_scan_node && that_present_mysql_scan_node))
        return false;
      if (!this.mysql_scan_node.equals(that.mysql_scan_node))
        return false;
    }

    boolean this_present_olap_scan_node = true && this.isSetOlapScanNode();
    boolean that_present_olap_scan_node = true && that.isSetOlapScanNode();
    if (this_present_olap_scan_node || that_present_olap_scan_node) {
      if (!(this_present_olap_scan_node && that_present_olap_scan_node))
        return false;
      if (!this.olap_scan_node.equals(that.olap_scan_node))
        return false;
    }

    boolean this_present_csv_scan_node = true && this.isSetCsvScanNode();
    boolean that_present_csv_scan_node = true && that.isSetCsvScanNode();
    if (this_present_csv_scan_node || that_present_csv_scan_node) {
      if (!(this_present_csv_scan_node && that_present_csv_scan_node))
        return false;
      if (!this.csv_scan_node.equals(that.csv_scan_node))
        return false;
    }

    boolean this_present_broker_scan_node = true && this.isSetBrokerScanNode();
    boolean that_present_broker_scan_node = true && that.isSetBrokerScanNode();
    if (this_present_broker_scan_node || that_present_broker_scan_node) {
      if (!(this_present_broker_scan_node && that_present_broker_scan_node))
        return false;
      if (!this.broker_scan_node.equals(that.broker_scan_node))
        return false;
    }

    boolean this_present_pre_agg_node = true && this.isSetPreAggNode();
    boolean that_present_pre_agg_node = true && that.isSetPreAggNode();
    if (this_present_pre_agg_node || that_present_pre_agg_node) {
      if (!(this_present_pre_agg_node && that_present_pre_agg_node))
        return false;
      if (!this.pre_agg_node.equals(that.pre_agg_node))
        return false;
    }

    boolean this_present_schema_scan_node = true && this.isSetSchemaScanNode();
    boolean that_present_schema_scan_node = true && that.isSetSchemaScanNode();
    if (this_present_schema_scan_node || that_present_schema_scan_node) {
      if (!(this_present_schema_scan_node && that_present_schema_scan_node))
        return false;
      if (!this.schema_scan_node.equals(that.schema_scan_node))
        return false;
    }

    boolean this_present_merge_join_node = true && this.isSetMergeJoinNode();
    boolean that_present_merge_join_node = true && that.isSetMergeJoinNode();
    if (this_present_merge_join_node || that_present_merge_join_node) {
      if (!(this_present_merge_join_node && that_present_merge_join_node))
        return false;
      if (!this.merge_join_node.equals(that.merge_join_node))
        return false;
    }

    boolean this_present_meta_scan_node = true && this.isSetMetaScanNode();
    boolean that_present_meta_scan_node = true && that.isSetMetaScanNode();
    if (this_present_meta_scan_node || that_present_meta_scan_node) {
      if (!(this_present_meta_scan_node && that_present_meta_scan_node))
        return false;
      if (!this.meta_scan_node.equals(that.meta_scan_node))
        return false;
    }

    boolean this_present_analytic_node = true && this.isSetAnalyticNode();
    boolean that_present_analytic_node = true && that.isSetAnalyticNode();
    if (this_present_analytic_node || that_present_analytic_node) {
      if (!(this_present_analytic_node && that_present_analytic_node))
        return false;
      if (!this.analytic_node.equals(that.analytic_node))
        return false;
    }

    boolean this_present_olap_rewrite_node = true && this.isSetOlapRewriteNode();
    boolean that_present_olap_rewrite_node = true && that.isSetOlapRewriteNode();
    if (this_present_olap_rewrite_node || that_present_olap_rewrite_node) {
      if (!(this_present_olap_rewrite_node && that_present_olap_rewrite_node))
        return false;
      if (!this.olap_rewrite_node.equals(that.olap_rewrite_node))
        return false;
    }

    boolean this_present_union_node = true && this.isSetUnionNode();
    boolean that_present_union_node = true && that.isSetUnionNode();
    if (this_present_union_node || that_present_union_node) {
      if (!(this_present_union_node && that_present_union_node))
        return false;
      if (!this.union_node.equals(that.union_node))
        return false;
    }

    boolean this_present_resource_profile = true && this.isSetResourceProfile();
    boolean that_present_resource_profile = true && that.isSetResourceProfile();
    if (this_present_resource_profile || that_present_resource_profile) {
      if (!(this_present_resource_profile && that_present_resource_profile))
        return false;
      if (!this.resource_profile.equals(that.resource_profile))
        return false;
    }

    boolean this_present_es_scan_node = true && this.isSetEsScanNode();
    boolean that_present_es_scan_node = true && that.isSetEsScanNode();
    if (this_present_es_scan_node || that_present_es_scan_node) {
      if (!(this_present_es_scan_node && that_present_es_scan_node))
        return false;
      if (!this.es_scan_node.equals(that.es_scan_node))
        return false;
    }

    boolean this_present_repeat_node = true && this.isSetRepeatNode();
    boolean that_present_repeat_node = true && that.isSetRepeatNode();
    if (this_present_repeat_node || that_present_repeat_node) {
      if (!(this_present_repeat_node && that_present_repeat_node))
        return false;
      if (!this.repeat_node.equals(that.repeat_node))
        return false;
    }

    boolean this_present_assert_num_rows_node = true && this.isSetAssertNumRowsNode();
    boolean that_present_assert_num_rows_node = true && that.isSetAssertNumRowsNode();
    if (this_present_assert_num_rows_node || that_present_assert_num_rows_node) {
      if (!(this_present_assert_num_rows_node && that_present_assert_num_rows_node))
        return false;
      if (!this.assert_num_rows_node.equals(that.assert_num_rows_node))
        return false;
    }

    boolean this_present_intersect_node = true && this.isSetIntersectNode();
    boolean that_present_intersect_node = true && that.isSetIntersectNode();
    if (this_present_intersect_node || that_present_intersect_node) {
      if (!(this_present_intersect_node && that_present_intersect_node))
        return false;
      if (!this.intersect_node.equals(that.intersect_node))
        return false;
    }

    boolean this_present_except_node = true && this.isSetExceptNode();
    boolean that_present_except_node = true && that.isSetExceptNode();
    if (this_present_except_node || that_present_except_node) {
      if (!(this_present_except_node && that_present_except_node))
        return false;
      if (!this.except_node.equals(that.except_node))
        return false;
    }

    boolean this_present_odbc_scan_node = true && this.isSetOdbcScanNode();
    boolean that_present_odbc_scan_node = true && that.isSetOdbcScanNode();
    if (this_present_odbc_scan_node || that_present_odbc_scan_node) {
      if (!(this_present_odbc_scan_node && that_present_odbc_scan_node))
        return false;
      if (!this.odbc_scan_node.equals(that.odbc_scan_node))
        return false;
    }

    boolean this_present_runtime_filters = true && this.isSetRuntimeFilters();
    boolean that_present_runtime_filters = true && that.isSetRuntimeFilters();
    if (this_present_runtime_filters || that_present_runtime_filters) {
      if (!(this_present_runtime_filters && that_present_runtime_filters))
        return false;
      if (!this.runtime_filters.equals(that.runtime_filters))
        return false;
    }

    boolean this_present_group_commit_scan_node = true && this.isSetGroupCommitScanNode();
    boolean that_present_group_commit_scan_node = true && that.isSetGroupCommitScanNode();
    if (this_present_group_commit_scan_node || that_present_group_commit_scan_node) {
      if (!(this_present_group_commit_scan_node && that_present_group_commit_scan_node))
        return false;
      if (!this.group_commit_scan_node.equals(that.group_commit_scan_node))
        return false;
    }

    boolean this_present_materialization_node = true && this.isSetMaterializationNode();
    boolean that_present_materialization_node = true && that.isSetMaterializationNode();
    if (this_present_materialization_node || that_present_materialization_node) {
      if (!(this_present_materialization_node && that_present_materialization_node))
        return false;
      if (!this.materialization_node.equals(that.materialization_node))
        return false;
    }

    boolean this_present_rec_cte_node = true && this.isSetRecCteNode();
    boolean that_present_rec_cte_node = true && that.isSetRecCteNode();
    if (this_present_rec_cte_node || that_present_rec_cte_node) {
      if (!(this_present_rec_cte_node && that_present_rec_cte_node))
        return false;
      if (!this.rec_cte_node.equals(that.rec_cte_node))
        return false;
    }

    boolean this_present_vconjunct = true && this.isSetVconjunct();
    boolean that_present_vconjunct = true && that.isSetVconjunct();
    if (this_present_vconjunct || that_present_vconjunct) {
      if (!(this_present_vconjunct && that_present_vconjunct))
        return false;
      if (!this.vconjunct.equals(that.vconjunct))
        return false;
    }

    boolean this_present_table_function_node = true && this.isSetTableFunctionNode();
    boolean that_present_table_function_node = true && that.isSetTableFunctionNode();
    if (this_present_table_function_node || that_present_table_function_node) {
      if (!(this_present_table_function_node && that_present_table_function_node))
        return false;
      if (!this.table_function_node.equals(that.table_function_node))
        return false;
    }

    boolean this_present_output_slot_ids = true && this.isSetOutputSlotIds();
    boolean that_present_output_slot_ids = true && that.isSetOutputSlotIds();
    if (this_present_output_slot_ids || that_present_output_slot_ids) {
      if (!(this_present_output_slot_ids && that_present_output_slot_ids))
        return false;
      if (!this.output_slot_ids.equals(that.output_slot_ids))
        return false;
    }

    boolean this_present_data_gen_scan_node = true && this.isSetDataGenScanNode();
    boolean that_present_data_gen_scan_node = true && that.isSetDataGenScanNode();
    if (this_present_data_gen_scan_node || that_present_data_gen_scan_node) {
      if (!(this_present_data_gen_scan_node && that_present_data_gen_scan_node))
        return false;
      if (!this.data_gen_scan_node.equals(that.data_gen_scan_node))
        return false;
    }

    boolean this_present_file_scan_node = true && this.isSetFileScanNode();
    boolean that_present_file_scan_node = true && that.isSetFileScanNode();
    if (this_present_file_scan_node || that_present_file_scan_node) {
      if (!(this_present_file_scan_node && that_present_file_scan_node))
        return false;
      if (!this.file_scan_node.equals(that.file_scan_node))
        return false;
    }

    boolean this_present_jdbc_scan_node = true && this.isSetJdbcScanNode();
    boolean that_present_jdbc_scan_node = true && that.isSetJdbcScanNode();
    if (this_present_jdbc_scan_node || that_present_jdbc_scan_node) {
      if (!(this_present_jdbc_scan_node && that_present_jdbc_scan_node))
        return false;
      if (!this.jdbc_scan_node.equals(that.jdbc_scan_node))
        return false;
    }

    boolean this_present_nested_loop_join_node = true && this.isSetNestedLoopJoinNode();
    boolean that_present_nested_loop_join_node = true && that.isSetNestedLoopJoinNode();
    if (this_present_nested_loop_join_node || that_present_nested_loop_join_node) {
      if (!(this_present_nested_loop_join_node && that_present_nested_loop_join_node))
        return false;
      if (!this.nested_loop_join_node.equals(that.nested_loop_join_node))
        return false;
    }

    boolean this_present_test_external_scan_node = true && this.isSetTestExternalScanNode();
    boolean that_present_test_external_scan_node = true && that.isSetTestExternalScanNode();
    if (this_present_test_external_scan_node || that_present_test_external_scan_node) {
      if (!(this_present_test_external_scan_node && that_present_test_external_scan_node))
        return false;
      if (!this.test_external_scan_node.equals(that.test_external_scan_node))
        return false;
    }

    boolean this_present_push_down_agg_type_opt = true && this.isSetPushDownAggTypeOpt();
    boolean that_present_push_down_agg_type_opt = true && that.isSetPushDownAggTypeOpt();
    if (this_present_push_down_agg_type_opt || that_present_push_down_agg_type_opt) {
      if (!(this_present_push_down_agg_type_opt && that_present_push_down_agg_type_opt))
        return false;
      if (!this.push_down_agg_type_opt.equals(that.push_down_agg_type_opt))
        return false;
    }

    boolean this_present_push_down_count = true && this.isSetPushDownCount();
    boolean that_present_push_down_count = true && that.isSetPushDownCount();
    if (this_present_push_down_count || that_present_push_down_count) {
      if (!(this_present_push_down_count && that_present_push_down_count))
        return false;
      if (this.push_down_count != that.push_down_count)
        return false;
    }

    boolean this_present_distribute_expr_lists = true && this.isSetDistributeExprLists();
    boolean that_present_distribute_expr_lists = true && that.isSetDistributeExprLists();
    if (this_present_distribute_expr_lists || that_present_distribute_expr_lists) {
      if (!(this_present_distribute_expr_lists && that_present_distribute_expr_lists))
        return false;
      if (!this.distribute_expr_lists.equals(that.distribute_expr_lists))
        return false;
    }

    boolean this_present_is_serial_operator = true && this.isSetIsSerialOperator();
    boolean that_present_is_serial_operator = true && that.isSetIsSerialOperator();
    if (this_present_is_serial_operator || that_present_is_serial_operator) {
      if (!(this_present_is_serial_operator && that_present_is_serial_operator))
        return false;
      if (this.is_serial_operator != that.is_serial_operator)
        return false;
    }

    boolean this_present_rec_cte_scan_node = true && this.isSetRecCteScanNode();
    boolean that_present_rec_cte_scan_node = true && that.isSetRecCteScanNode();
    if (this_present_rec_cte_scan_node || that_present_rec_cte_scan_node) {
      if (!(this_present_rec_cte_scan_node && that_present_rec_cte_scan_node))
        return false;
      if (!this.rec_cte_scan_node.equals(that.rec_cte_scan_node))
        return false;
    }

    boolean this_present_projections = true && this.isSetProjections();
    boolean that_present_projections = true && that.isSetProjections();
    if (this_present_projections || that_present_projections) {
      if (!(this_present_projections && that_present_projections))
        return false;
      if (!this.projections.equals(that.projections))
        return false;
    }

    boolean this_present_output_tuple_id = true && this.isSetOutputTupleId();
    boolean that_present_output_tuple_id = true && that.isSetOutputTupleId();
    if (this_present_output_tuple_id || that_present_output_tuple_id) {
      if (!(this_present_output_tuple_id && that_present_output_tuple_id))
        return false;
      if (this.output_tuple_id != that.output_tuple_id)
        return false;
    }

    boolean this_present_partition_sort_node = true && this.isSetPartitionSortNode();
    boolean that_present_partition_sort_node = true && that.isSetPartitionSortNode();
    if (this_present_partition_sort_node || that_present_partition_sort_node) {
      if (!(this_present_partition_sort_node && that_present_partition_sort_node))
        return false;
      if (!this.partition_sort_node.equals(that.partition_sort_node))
        return false;
    }

    boolean this_present_intermediate_projections_list = true && this.isSetIntermediateProjectionsList();
    boolean that_present_intermediate_projections_list = true && that.isSetIntermediateProjectionsList();
    if (this_present_intermediate_projections_list || that_present_intermediate_projections_list) {
      if (!(this_present_intermediate_projections_list && that_present_intermediate_projections_list))
        return false;
      if (!this.intermediate_projections_list.equals(that.intermediate_projections_list))
        return false;
    }

    boolean this_present_intermediate_output_tuple_id_list = true && this.isSetIntermediateOutputTupleIdList();
    boolean that_present_intermediate_output_tuple_id_list = true && that.isSetIntermediateOutputTupleIdList();
    if (this_present_intermediate_output_tuple_id_list || that_present_intermediate_output_tuple_id_list) {
      if (!(this_present_intermediate_output_tuple_id_list && that_present_intermediate_output_tuple_id_list))
        return false;
      if (!this.intermediate_output_tuple_id_list.equals(that.intermediate_output_tuple_id_list))
        return false;
    }

    boolean this_present_topn_filter_source_node_ids = true && this.isSetTopnFilterSourceNodeIds();
    boolean that_present_topn_filter_source_node_ids = true && that.isSetTopnFilterSourceNodeIds();
    if (this_present_topn_filter_source_node_ids || that_present_topn_filter_source_node_ids) {
      if (!(this_present_topn_filter_source_node_ids && that_present_topn_filter_source_node_ids))
        return false;
      if (!this.topn_filter_source_node_ids.equals(that.topn_filter_source_node_ids))
        return false;
    }

    boolean this_present_nereids_id = true && this.isSetNereidsId();
    boolean that_present_nereids_id = true && that.isSetNereidsId();
    if (this_present_nereids_id || that_present_nereids_id) {
      if (!(this_present_nereids_id && that_present_nereids_id))
        return false;
      if (this.nereids_id != that.nereids_id)
        return false;
    }

    return true;
  }

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

    hashCode = hashCode * 8191 + node_id;

    hashCode = hashCode * 8191 + ((isSetNodeType()) ? 131071 : 524287);
    if (isSetNodeType())
      hashCode = hashCode * 8191 + node_type.getValue();

    hashCode = hashCode * 8191 + num_children;

    hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(limit);

    hashCode = hashCode * 8191 + ((isSetRowTuples()) ? 131071 : 524287);
    if (isSetRowTuples())
      hashCode = hashCode * 8191 + row_tuples.hashCode();

    hashCode = hashCode * 8191 + ((isSetNullableTuples()) ? 131071 : 524287);
    if (isSetNullableTuples())
      hashCode = hashCode * 8191 + nullable_tuples.hashCode();

    hashCode = hashCode * 8191 + ((isSetConjuncts()) ? 131071 : 524287);
    if (isSetConjuncts())
      hashCode = hashCode * 8191 + conjuncts.hashCode();

    hashCode = hashCode * 8191 + ((compact_data) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetHashJoinNode()) ? 131071 : 524287);
    if (isSetHashJoinNode())
      hashCode = hashCode * 8191 + hash_join_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetAggNode()) ? 131071 : 524287);
    if (isSetAggNode())
      hashCode = hashCode * 8191 + agg_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetSortNode()) ? 131071 : 524287);
    if (isSetSortNode())
      hashCode = hashCode * 8191 + sort_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetMergeNode()) ? 131071 : 524287);
    if (isSetMergeNode())
      hashCode = hashCode * 8191 + merge_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetExchangeNode()) ? 131071 : 524287);
    if (isSetExchangeNode())
      hashCode = hashCode * 8191 + exchange_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetMysqlScanNode()) ? 131071 : 524287);
    if (isSetMysqlScanNode())
      hashCode = hashCode * 8191 + mysql_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetOlapScanNode()) ? 131071 : 524287);
    if (isSetOlapScanNode())
      hashCode = hashCode * 8191 + olap_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetCsvScanNode()) ? 131071 : 524287);
    if (isSetCsvScanNode())
      hashCode = hashCode * 8191 + csv_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetBrokerScanNode()) ? 131071 : 524287);
    if (isSetBrokerScanNode())
      hashCode = hashCode * 8191 + broker_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetPreAggNode()) ? 131071 : 524287);
    if (isSetPreAggNode())
      hashCode = hashCode * 8191 + pre_agg_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetSchemaScanNode()) ? 131071 : 524287);
    if (isSetSchemaScanNode())
      hashCode = hashCode * 8191 + schema_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetMergeJoinNode()) ? 131071 : 524287);
    if (isSetMergeJoinNode())
      hashCode = hashCode * 8191 + merge_join_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetMetaScanNode()) ? 131071 : 524287);
    if (isSetMetaScanNode())
      hashCode = hashCode * 8191 + meta_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetAnalyticNode()) ? 131071 : 524287);
    if (isSetAnalyticNode())
      hashCode = hashCode * 8191 + analytic_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetOlapRewriteNode()) ? 131071 : 524287);
    if (isSetOlapRewriteNode())
      hashCode = hashCode * 8191 + olap_rewrite_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetUnionNode()) ? 131071 : 524287);
    if (isSetUnionNode())
      hashCode = hashCode * 8191 + union_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetResourceProfile()) ? 131071 : 524287);
    if (isSetResourceProfile())
      hashCode = hashCode * 8191 + resource_profile.hashCode();

    hashCode = hashCode * 8191 + ((isSetEsScanNode()) ? 131071 : 524287);
    if (isSetEsScanNode())
      hashCode = hashCode * 8191 + es_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetRepeatNode()) ? 131071 : 524287);
    if (isSetRepeatNode())
      hashCode = hashCode * 8191 + repeat_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetAssertNumRowsNode()) ? 131071 : 524287);
    if (isSetAssertNumRowsNode())
      hashCode = hashCode * 8191 + assert_num_rows_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetIntersectNode()) ? 131071 : 524287);
    if (isSetIntersectNode())
      hashCode = hashCode * 8191 + intersect_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetExceptNode()) ? 131071 : 524287);
    if (isSetExceptNode())
      hashCode = hashCode * 8191 + except_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetOdbcScanNode()) ? 131071 : 524287);
    if (isSetOdbcScanNode())
      hashCode = hashCode * 8191 + odbc_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetRuntimeFilters()) ? 131071 : 524287);
    if (isSetRuntimeFilters())
      hashCode = hashCode * 8191 + runtime_filters.hashCode();

    hashCode = hashCode * 8191 + ((isSetGroupCommitScanNode()) ? 131071 : 524287);
    if (isSetGroupCommitScanNode())
      hashCode = hashCode * 8191 + group_commit_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetMaterializationNode()) ? 131071 : 524287);
    if (isSetMaterializationNode())
      hashCode = hashCode * 8191 + materialization_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetRecCteNode()) ? 131071 : 524287);
    if (isSetRecCteNode())
      hashCode = hashCode * 8191 + rec_cte_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetVconjunct()) ? 131071 : 524287);
    if (isSetVconjunct())
      hashCode = hashCode * 8191 + vconjunct.hashCode();

    hashCode = hashCode * 8191 + ((isSetTableFunctionNode()) ? 131071 : 524287);
    if (isSetTableFunctionNode())
      hashCode = hashCode * 8191 + table_function_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetOutputSlotIds()) ? 131071 : 524287);
    if (isSetOutputSlotIds())
      hashCode = hashCode * 8191 + output_slot_ids.hashCode();

    hashCode = hashCode * 8191 + ((isSetDataGenScanNode()) ? 131071 : 524287);
    if (isSetDataGenScanNode())
      hashCode = hashCode * 8191 + data_gen_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetFileScanNode()) ? 131071 : 524287);
    if (isSetFileScanNode())
      hashCode = hashCode * 8191 + file_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetJdbcScanNode()) ? 131071 : 524287);
    if (isSetJdbcScanNode())
      hashCode = hashCode * 8191 + jdbc_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetNestedLoopJoinNode()) ? 131071 : 524287);
    if (isSetNestedLoopJoinNode())
      hashCode = hashCode * 8191 + nested_loop_join_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetTestExternalScanNode()) ? 131071 : 524287);
    if (isSetTestExternalScanNode())
      hashCode = hashCode * 8191 + test_external_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetPushDownAggTypeOpt()) ? 131071 : 524287);
    if (isSetPushDownAggTypeOpt())
      hashCode = hashCode * 8191 + push_down_agg_type_opt.getValue();

    hashCode = hashCode * 8191 + ((isSetPushDownCount()) ? 131071 : 524287);
    if (isSetPushDownCount())
      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(push_down_count);

    hashCode = hashCode * 8191 + ((isSetDistributeExprLists()) ? 131071 : 524287);
    if (isSetDistributeExprLists())
      hashCode = hashCode * 8191 + distribute_expr_lists.hashCode();

    hashCode = hashCode * 8191 + ((isSetIsSerialOperator()) ? 131071 : 524287);
    if (isSetIsSerialOperator())
      hashCode = hashCode * 8191 + ((is_serial_operator) ? 131071 : 524287);

    hashCode = hashCode * 8191 + ((isSetRecCteScanNode()) ? 131071 : 524287);
    if (isSetRecCteScanNode())
      hashCode = hashCode * 8191 + rec_cte_scan_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetProjections()) ? 131071 : 524287);
    if (isSetProjections())
      hashCode = hashCode * 8191 + projections.hashCode();

    hashCode = hashCode * 8191 + ((isSetOutputTupleId()) ? 131071 : 524287);
    if (isSetOutputTupleId())
      hashCode = hashCode * 8191 + output_tuple_id;

    hashCode = hashCode * 8191 + ((isSetPartitionSortNode()) ? 131071 : 524287);
    if (isSetPartitionSortNode())
      hashCode = hashCode * 8191 + partition_sort_node.hashCode();

    hashCode = hashCode * 8191 + ((isSetIntermediateProjectionsList()) ? 131071 : 524287);
    if (isSetIntermediateProjectionsList())
      hashCode = hashCode * 8191 + intermediate_projections_list.hashCode();

    hashCode = hashCode * 8191 + ((isSetIntermediateOutputTupleIdList()) ? 131071 : 524287);
    if (isSetIntermediateOutputTupleIdList())
      hashCode = hashCode * 8191 + intermediate_output_tuple_id_list.hashCode();

    hashCode = hashCode * 8191 + ((isSetTopnFilterSourceNodeIds()) ? 131071 : 524287);
    if (isSetTopnFilterSourceNodeIds())
      hashCode = hashCode * 8191 + topn_filter_source_node_ids.hashCode();

    hashCode = hashCode * 8191 + ((isSetNereidsId()) ? 131071 : 524287);
    if (isSetNereidsId())
      hashCode = hashCode * 8191 + nereids_id;

    return hashCode;
  }

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

    int lastComparison = 0;

    lastComparison = java.lang.Boolean.compare(isSetNodeId(), other.isSetNodeId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNodeId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.node_id, other.node_id);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetNodeType(), other.isSetNodeType());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNodeType()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.node_type, other.node_type);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetNumChildren(), other.isSetNumChildren());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNumChildren()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.num_children, other.num_children);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetLimit(), other.isSetLimit());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetLimit()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.limit, other.limit);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetRowTuples(), other.isSetRowTuples());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRowTuples()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.row_tuples, other.row_tuples);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetNullableTuples(), other.isSetNullableTuples());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNullableTuples()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nullable_tuples, other.nullable_tuples);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetConjuncts(), other.isSetConjuncts());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetConjuncts()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.conjuncts, other.conjuncts);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetCompactData(), other.isSetCompactData());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCompactData()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.compact_data, other.compact_data);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetHashJoinNode(), other.isSetHashJoinNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetHashJoinNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.hash_join_node, other.hash_join_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetAggNode(), other.isSetAggNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAggNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.agg_node, other.agg_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetSortNode(), other.isSetSortNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSortNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sort_node, other.sort_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetMergeNode(), other.isSetMergeNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMergeNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.merge_node, other.merge_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetExchangeNode(), other.isSetExchangeNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetExchangeNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.exchange_node, other.exchange_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetMysqlScanNode(), other.isSetMysqlScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMysqlScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.mysql_scan_node, other.mysql_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetOlapScanNode(), other.isSetOlapScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOlapScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.olap_scan_node, other.olap_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetCsvScanNode(), other.isSetCsvScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCsvScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.csv_scan_node, other.csv_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetBrokerScanNode(), other.isSetBrokerScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBrokerScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.broker_scan_node, other.broker_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetPreAggNode(), other.isSetPreAggNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPreAggNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.pre_agg_node, other.pre_agg_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetSchemaScanNode(), other.isSetSchemaScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSchemaScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.schema_scan_node, other.schema_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetMergeJoinNode(), other.isSetMergeJoinNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMergeJoinNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.merge_join_node, other.merge_join_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetMetaScanNode(), other.isSetMetaScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMetaScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.meta_scan_node, other.meta_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetAnalyticNode(), other.isSetAnalyticNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAnalyticNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.analytic_node, other.analytic_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetOlapRewriteNode(), other.isSetOlapRewriteNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOlapRewriteNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.olap_rewrite_node, other.olap_rewrite_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetUnionNode(), other.isSetUnionNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUnionNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.union_node, other.union_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetResourceProfile(), other.isSetResourceProfile());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetResourceProfile()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resource_profile, other.resource_profile);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetEsScanNode(), other.isSetEsScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEsScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.es_scan_node, other.es_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetRepeatNode(), other.isSetRepeatNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRepeatNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.repeat_node, other.repeat_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetAssertNumRowsNode(), other.isSetAssertNumRowsNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAssertNumRowsNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.assert_num_rows_node, other.assert_num_rows_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetIntersectNode(), other.isSetIntersectNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIntersectNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.intersect_node, other.intersect_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetExceptNode(), other.isSetExceptNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetExceptNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.except_node, other.except_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetOdbcScanNode(), other.isSetOdbcScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOdbcScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.odbc_scan_node, other.odbc_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetRuntimeFilters(), other.isSetRuntimeFilters());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRuntimeFilters()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.runtime_filters, other.runtime_filters);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetGroupCommitScanNode(), other.isSetGroupCommitScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetGroupCommitScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.group_commit_scan_node, other.group_commit_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetMaterializationNode(), other.isSetMaterializationNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMaterializationNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.materialization_node, other.materialization_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetRecCteNode(), other.isSetRecCteNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRecCteNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rec_cte_node, other.rec_cte_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetVconjunct(), other.isSetVconjunct());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetVconjunct()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.vconjunct, other.vconjunct);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetTableFunctionNode(), other.isSetTableFunctionNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTableFunctionNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.table_function_node, other.table_function_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetOutputSlotIds(), other.isSetOutputSlotIds());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOutputSlotIds()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.output_slot_ids, other.output_slot_ids);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetDataGenScanNode(), other.isSetDataGenScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDataGenScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.data_gen_scan_node, other.data_gen_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetFileScanNode(), other.isSetFileScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetFileScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.file_scan_node, other.file_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetJdbcScanNode(), other.isSetJdbcScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetJdbcScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.jdbc_scan_node, other.jdbc_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetNestedLoopJoinNode(), other.isSetNestedLoopJoinNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNestedLoopJoinNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nested_loop_join_node, other.nested_loop_join_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetTestExternalScanNode(), other.isSetTestExternalScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTestExternalScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.test_external_scan_node, other.test_external_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetPushDownAggTypeOpt(), other.isSetPushDownAggTypeOpt());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPushDownAggTypeOpt()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.push_down_agg_type_opt, other.push_down_agg_type_opt);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetPushDownCount(), other.isSetPushDownCount());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPushDownCount()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.push_down_count, other.push_down_count);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetDistributeExprLists(), other.isSetDistributeExprLists());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDistributeExprLists()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.distribute_expr_lists, other.distribute_expr_lists);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetIsSerialOperator(), other.isSetIsSerialOperator());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIsSerialOperator()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.is_serial_operator, other.is_serial_operator);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetRecCteScanNode(), other.isSetRecCteScanNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRecCteScanNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rec_cte_scan_node, other.rec_cte_scan_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetProjections(), other.isSetProjections());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProjections()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.projections, other.projections);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetOutputTupleId(), other.isSetOutputTupleId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOutputTupleId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.output_tuple_id, other.output_tuple_id);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetPartitionSortNode(), other.isSetPartitionSortNode());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPartitionSortNode()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partition_sort_node, other.partition_sort_node);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetIntermediateProjectionsList(), other.isSetIntermediateProjectionsList());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIntermediateProjectionsList()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.intermediate_projections_list, other.intermediate_projections_list);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetIntermediateOutputTupleIdList(), other.isSetIntermediateOutputTupleIdList());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIntermediateOutputTupleIdList()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.intermediate_output_tuple_id_list, other.intermediate_output_tuple_id_list);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetTopnFilterSourceNodeIds(), other.isSetTopnFilterSourceNodeIds());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTopnFilterSourceNodeIds()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.topn_filter_source_node_ids, other.topn_filter_source_node_ids);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.compare(isSetNereidsId(), other.isSetNereidsId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNereidsId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nereids_id, other.nereids_id);
      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("TPlanNode(");
    boolean first = true;

    sb.append("node_id:");
    sb.append(this.node_id);
    first = false;
    if (!first) sb.append(", ");
    sb.append("node_type:");
    if (this.node_type == null) {
      sb.append("null");
    } else {
      sb.append(this.node_type);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("num_children:");
    sb.append(this.num_children);
    first = false;
    if (!first) sb.append(", ");
    sb.append("limit:");
    sb.append(this.limit);
    first = false;
    if (!first) sb.append(", ");
    sb.append("row_tuples:");
    if (this.row_tuples == null) {
      sb.append("null");
    } else {
      sb.append(this.row_tuples);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("nullable_tuples:");
    if (this.nullable_tuples == null) {
      sb.append("null");
    } else {
      sb.append(this.nullable_tuples);
    }
    first = false;
    if (isSetConjuncts()) {
      if (!first) sb.append(", ");
      sb.append("conjuncts:");
      if (this.conjuncts == null) {
        sb.append("null");
      } else {
        sb.append(this.conjuncts);
      }
      first = false;
    }
    if (!first) sb.append(", ");
    sb.append("compact_data:");
    sb.append(this.compact_data);
    first = false;
    if (isSetHashJoinNode()) {
      if (!first) sb.append(", ");
      sb.append("hash_join_node:");
      if (this.hash_join_node == null) {
        sb.append("null");
      } else {
        sb.append(this.hash_join_node);
      }
      first = false;
    }
    if (isSetAggNode()) {
      if (!first) sb.append(", ");
      sb.append("agg_node:");
      if (this.agg_node == null) {
        sb.append("null");
      } else {
        sb.append(this.agg_node);
      }
      first = false;
    }
    if (isSetSortNode()) {
      if (!first) sb.append(", ");
      sb.append("sort_node:");
      if (this.sort_node == null) {
        sb.append("null");
      } else {
        sb.append(this.sort_node);
      }
      first = false;
    }
    if (isSetMergeNode()) {
      if (!first) sb.append(", ");
      sb.append("merge_node:");
      if (this.merge_node == null) {
        sb.append("null");
      } else {
        sb.append(this.merge_node);
      }
      first = false;
    }
    if (isSetExchangeNode()) {
      if (!first) sb.append(", ");
      sb.append("exchange_node:");
      if (this.exchange_node == null) {
        sb.append("null");
      } else {
        sb.append(this.exchange_node);
      }
      first = false;
    }
    if (isSetMysqlScanNode()) {
      if (!first) sb.append(", ");
      sb.append("mysql_scan_node:");
      if (this.mysql_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.mysql_scan_node);
      }
      first = false;
    }
    if (isSetOlapScanNode()) {
      if (!first) sb.append(", ");
      sb.append("olap_scan_node:");
      if (this.olap_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.olap_scan_node);
      }
      first = false;
    }
    if (isSetCsvScanNode()) {
      if (!first) sb.append(", ");
      sb.append("csv_scan_node:");
      if (this.csv_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.csv_scan_node);
      }
      first = false;
    }
    if (isSetBrokerScanNode()) {
      if (!first) sb.append(", ");
      sb.append("broker_scan_node:");
      if (this.broker_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.broker_scan_node);
      }
      first = false;
    }
    if (isSetPreAggNode()) {
      if (!first) sb.append(", ");
      sb.append("pre_agg_node:");
      if (this.pre_agg_node == null) {
        sb.append("null");
      } else {
        sb.append(this.pre_agg_node);
      }
      first = false;
    }
    if (isSetSchemaScanNode()) {
      if (!first) sb.append(", ");
      sb.append("schema_scan_node:");
      if (this.schema_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.schema_scan_node);
      }
      first = false;
    }
    if (isSetMergeJoinNode()) {
      if (!first) sb.append(", ");
      sb.append("merge_join_node:");
      if (this.merge_join_node == null) {
        sb.append("null");
      } else {
        sb.append(this.merge_join_node);
      }
      first = false;
    }
    if (isSetMetaScanNode()) {
      if (!first) sb.append(", ");
      sb.append("meta_scan_node:");
      if (this.meta_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.meta_scan_node);
      }
      first = false;
    }
    if (isSetAnalyticNode()) {
      if (!first) sb.append(", ");
      sb.append("analytic_node:");
      if (this.analytic_node == null) {
        sb.append("null");
      } else {
        sb.append(this.analytic_node);
      }
      first = false;
    }
    if (isSetOlapRewriteNode()) {
      if (!first) sb.append(", ");
      sb.append("olap_rewrite_node:");
      if (this.olap_rewrite_node == null) {
        sb.append("null");
      } else {
        sb.append(this.olap_rewrite_node);
      }
      first = false;
    }
    if (isSetUnionNode()) {
      if (!first) sb.append(", ");
      sb.append("union_node:");
      if (this.union_node == null) {
        sb.append("null");
      } else {
        sb.append(this.union_node);
      }
      first = false;
    }
    if (isSetResourceProfile()) {
      if (!first) sb.append(", ");
      sb.append("resource_profile:");
      if (this.resource_profile == null) {
        sb.append("null");
      } else {
        sb.append(this.resource_profile);
      }
      first = false;
    }
    if (isSetEsScanNode()) {
      if (!first) sb.append(", ");
      sb.append("es_scan_node:");
      if (this.es_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.es_scan_node);
      }
      first = false;
    }
    if (isSetRepeatNode()) {
      if (!first) sb.append(", ");
      sb.append("repeat_node:");
      if (this.repeat_node == null) {
        sb.append("null");
      } else {
        sb.append(this.repeat_node);
      }
      first = false;
    }
    if (isSetAssertNumRowsNode()) {
      if (!first) sb.append(", ");
      sb.append("assert_num_rows_node:");
      if (this.assert_num_rows_node == null) {
        sb.append("null");
      } else {
        sb.append(this.assert_num_rows_node);
      }
      first = false;
    }
    if (isSetIntersectNode()) {
      if (!first) sb.append(", ");
      sb.append("intersect_node:");
      if (this.intersect_node == null) {
        sb.append("null");
      } else {
        sb.append(this.intersect_node);
      }
      first = false;
    }
    if (isSetExceptNode()) {
      if (!first) sb.append(", ");
      sb.append("except_node:");
      if (this.except_node == null) {
        sb.append("null");
      } else {
        sb.append(this.except_node);
      }
      first = false;
    }
    if (isSetOdbcScanNode()) {
      if (!first) sb.append(", ");
      sb.append("odbc_scan_node:");
      if (this.odbc_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.odbc_scan_node);
      }
      first = false;
    }
    if (isSetRuntimeFilters()) {
      if (!first) sb.append(", ");
      sb.append("runtime_filters:");
      if (this.runtime_filters == null) {
        sb.append("null");
      } else {
        sb.append(this.runtime_filters);
      }
      first = false;
    }
    if (isSetGroupCommitScanNode()) {
      if (!first) sb.append(", ");
      sb.append("group_commit_scan_node:");
      if (this.group_commit_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.group_commit_scan_node);
      }
      first = false;
    }
    if (isSetMaterializationNode()) {
      if (!first) sb.append(", ");
      sb.append("materialization_node:");
      if (this.materialization_node == null) {
        sb.append("null");
      } else {
        sb.append(this.materialization_node);
      }
      first = false;
    }
    if (isSetRecCteNode()) {
      if (!first) sb.append(", ");
      sb.append("rec_cte_node:");
      if (this.rec_cte_node == null) {
        sb.append("null");
      } else {
        sb.append(this.rec_cte_node);
      }
      first = false;
    }
    if (isSetVconjunct()) {
      if (!first) sb.append(", ");
      sb.append("vconjunct:");
      if (this.vconjunct == null) {
        sb.append("null");
      } else {
        sb.append(this.vconjunct);
      }
      first = false;
    }
    if (isSetTableFunctionNode()) {
      if (!first) sb.append(", ");
      sb.append("table_function_node:");
      if (this.table_function_node == null) {
        sb.append("null");
      } else {
        sb.append(this.table_function_node);
      }
      first = false;
    }
    if (isSetOutputSlotIds()) {
      if (!first) sb.append(", ");
      sb.append("output_slot_ids:");
      if (this.output_slot_ids == null) {
        sb.append("null");
      } else {
        sb.append(this.output_slot_ids);
      }
      first = false;
    }
    if (isSetDataGenScanNode()) {
      if (!first) sb.append(", ");
      sb.append("data_gen_scan_node:");
      if (this.data_gen_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.data_gen_scan_node);
      }
      first = false;
    }
    if (isSetFileScanNode()) {
      if (!first) sb.append(", ");
      sb.append("file_scan_node:");
      if (this.file_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.file_scan_node);
      }
      first = false;
    }
    if (isSetJdbcScanNode()) {
      if (!first) sb.append(", ");
      sb.append("jdbc_scan_node:");
      if (this.jdbc_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.jdbc_scan_node);
      }
      first = false;
    }
    if (isSetNestedLoopJoinNode()) {
      if (!first) sb.append(", ");
      sb.append("nested_loop_join_node:");
      if (this.nested_loop_join_node == null) {
        sb.append("null");
      } else {
        sb.append(this.nested_loop_join_node);
      }
      first = false;
    }
    if (isSetTestExternalScanNode()) {
      if (!first) sb.append(", ");
      sb.append("test_external_scan_node:");
      if (this.test_external_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.test_external_scan_node);
      }
      first = false;
    }
    if (isSetPushDownAggTypeOpt()) {
      if (!first) sb.append(", ");
      sb.append("push_down_agg_type_opt:");
      if (this.push_down_agg_type_opt == null) {
        sb.append("null");
      } else {
        sb.append(this.push_down_agg_type_opt);
      }
      first = false;
    }
    if (isSetPushDownCount()) {
      if (!first) sb.append(", ");
      sb.append("push_down_count:");
      sb.append(this.push_down_count);
      first = false;
    }
    if (isSetDistributeExprLists()) {
      if (!first) sb.append(", ");
      sb.append("distribute_expr_lists:");
      if (this.distribute_expr_lists == null) {
        sb.append("null");
      } else {
        sb.append(this.distribute_expr_lists);
      }
      first = false;
    }
    if (isSetIsSerialOperator()) {
      if (!first) sb.append(", ");
      sb.append("is_serial_operator:");
      sb.append(this.is_serial_operator);
      first = false;
    }
    if (isSetRecCteScanNode()) {
      if (!first) sb.append(", ");
      sb.append("rec_cte_scan_node:");
      if (this.rec_cte_scan_node == null) {
        sb.append("null");
      } else {
        sb.append(this.rec_cte_scan_node);
      }
      first = false;
    }
    if (isSetProjections()) {
      if (!first) sb.append(", ");
      sb.append("projections:");
      if (this.projections == null) {
        sb.append("null");
      } else {
        sb.append(this.projections);
      }
      first = false;
    }
    if (isSetOutputTupleId()) {
      if (!first) sb.append(", ");
      sb.append("output_tuple_id:");
      sb.append(this.output_tuple_id);
      first = false;
    }
    if (isSetPartitionSortNode()) {
      if (!first) sb.append(", ");
      sb.append("partition_sort_node:");
      if (this.partition_sort_node == null) {
        sb.append("null");
      } else {
        sb.append(this.partition_sort_node);
      }
      first = false;
    }
    if (isSetIntermediateProjectionsList()) {
      if (!first) sb.append(", ");
      sb.append("intermediate_projections_list:");
      if (this.intermediate_projections_list == null) {
        sb.append("null");
      } else {
        sb.append(this.intermediate_projections_list);
      }
      first = false;
    }
    if (isSetIntermediateOutputTupleIdList()) {
      if (!first) sb.append(", ");
      sb.append("intermediate_output_tuple_id_list:");
      if (this.intermediate_output_tuple_id_list == null) {
        sb.append("null");
      } else {
        sb.append(this.intermediate_output_tuple_id_list);
      }
      first = false;
    }
    if (isSetTopnFilterSourceNodeIds()) {
      if (!first) sb.append(", ");
      sb.append("topn_filter_source_node_ids:");
      if (this.topn_filter_source_node_ids == null) {
        sb.append("null");
      } else {
        sb.append(this.topn_filter_source_node_ids);
      }
      first = false;
    }
    if (isSetNereidsId()) {
      if (!first) sb.append(", ");
      sb.append("nereids_id:");
      sb.append(this.nereids_id);
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    // alas, we cannot check 'node_id' because it's a primitive and you chose the non-beans generator.
    if (node_type == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'node_type' was not present! Struct: " + toString());
    }
    // alas, we cannot check 'num_children' because it's a primitive and you chose the non-beans generator.
    // alas, we cannot check 'limit' because it's a primitive and you chose the non-beans generator.
    if (row_tuples == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'row_tuples' was not present! Struct: " + toString());
    }
    if (nullable_tuples == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'nullable_tuples' was not present! Struct: " + toString());
    }
    // alas, we cannot check 'compact_data' because it's a primitive and you chose the non-beans generator.
    // check for sub-struct validity
    if (hash_join_node != null) {
      hash_join_node.validate();
    }
    if (agg_node != null) {
      agg_node.validate();
    }
    if (sort_node != null) {
      sort_node.validate();
    }
    if (merge_node != null) {
      merge_node.validate();
    }
    if (exchange_node != null) {
      exchange_node.validate();
    }
    if (mysql_scan_node != null) {
      mysql_scan_node.validate();
    }
    if (olap_scan_node != null) {
      olap_scan_node.validate();
    }
    if (csv_scan_node != null) {
      csv_scan_node.validate();
    }
    if (broker_scan_node != null) {
      broker_scan_node.validate();
    }
    if (pre_agg_node != null) {
      pre_agg_node.validate();
    }
    if (schema_scan_node != null) {
      schema_scan_node.validate();
    }
    if (merge_join_node != null) {
      merge_join_node.validate();
    }
    if (meta_scan_node != null) {
      meta_scan_node.validate();
    }
    if (analytic_node != null) {
      analytic_node.validate();
    }
    if (olap_rewrite_node != null) {
      olap_rewrite_node.validate();
    }
    if (union_node != null) {
      union_node.validate();
    }
    if (resource_profile != null) {
      resource_profile.validate();
    }
    if (es_scan_node != null) {
      es_scan_node.validate();
    }
    if (repeat_node != null) {
      repeat_node.validate();
    }
    if (assert_num_rows_node != null) {
      assert_num_rows_node.validate();
    }
    if (intersect_node != null) {
      intersect_node.validate();
    }
    if (except_node != null) {
      except_node.validate();
    }
    if (odbc_scan_node != null) {
      odbc_scan_node.validate();
    }
    if (group_commit_scan_node != null) {
      group_commit_scan_node.validate();
    }
    if (materialization_node != null) {
      materialization_node.validate();
    }
    if (rec_cte_node != null) {
      rec_cte_node.validate();
    }
    if (vconjunct != null) {
      vconjunct.validate();
    }
    if (table_function_node != null) {
      table_function_node.validate();
    }
    if (data_gen_scan_node != null) {
      data_gen_scan_node.validate();
    }
    if (file_scan_node != null) {
      file_scan_node.validate();
    }
    if (jdbc_scan_node != null) {
      jdbc_scan_node.validate();
    }
    if (nested_loop_join_node != null) {
      nested_loop_join_node.validate();
    }
    if (test_external_scan_node != null) {
      test_external_scan_node.validate();
    }
    if (rec_cte_scan_node != null) {
      rec_cte_scan_node.validate();
    }
    if (partition_sort_node != null) {
      partition_sort_node.validate();
    }
  }

  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 TPlanNodeStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public TPlanNodeStandardScheme getScheme() {
      return new TPlanNodeStandardScheme();
    }
  }

  private static class TPlanNodeStandardScheme extends org.apache.thrift.scheme.StandardScheme<TPlanNode> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, TPlanNode 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: // NODE_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.node_id = iprot.readI32();
              struct.setNodeIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // NODE_TYPE
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.node_type = org.apache.doris.thrift.TPlanNodeType.findByValue(iprot.readI32());
              struct.setNodeTypeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // NUM_CHILDREN
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.num_children = iprot.readI32();
              struct.setNumChildrenIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // LIMIT
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.limit = iprot.readI64();
              struct.setLimitIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // ROW_TUPLES
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1174 = iprot.readListBegin();
                struct.row_tuples = new java.util.ArrayList<java.lang.Integer>(_list1174.size);
                int _elem1175;
                for (int _i1176 = 0; _i1176 < _list1174.size; ++_i1176)
                {
                  _elem1175 = iprot.readI32();
                  struct.row_tuples.add(_elem1175);
                }
                iprot.readListEnd();
              }
              struct.setRowTuplesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // NULLABLE_TUPLES
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1177 = iprot.readListBegin();
                struct.nullable_tuples = new java.util.ArrayList<java.lang.Boolean>(_list1177.size);
                boolean _elem1178;
                for (int _i1179 = 0; _i1179 < _list1177.size; ++_i1179)
                {
                  _elem1178 = iprot.readBool();
                  struct.nullable_tuples.add(_elem1178);
                }
                iprot.readListEnd();
              }
              struct.setNullableTuplesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // CONJUNCTS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1180 = iprot.readListBegin();
                struct.conjuncts = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1180.size);
                @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1181;
                for (int _i1182 = 0; _i1182 < _list1180.size; ++_i1182)
                {
                  _elem1181 = new org.apache.doris.thrift.TExpr();
                  _elem1181.read(iprot);
                  struct.conjuncts.add(_elem1181);
                }
                iprot.readListEnd();
              }
              struct.setConjunctsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // COMPACT_DATA
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.compact_data = iprot.readBool();
              struct.setCompactDataIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // HASH_JOIN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.hash_join_node = new THashJoinNode();
              struct.hash_join_node.read(iprot);
              struct.setHashJoinNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 12: // AGG_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.agg_node = new TAggregationNode();
              struct.agg_node.read(iprot);
              struct.setAggNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 13: // SORT_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.sort_node = new TSortNode();
              struct.sort_node.read(iprot);
              struct.setSortNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 14: // MERGE_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.merge_node = new TMergeNode();
              struct.merge_node.read(iprot);
              struct.setMergeNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 15: // EXCHANGE_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.exchange_node = new TExchangeNode();
              struct.exchange_node.read(iprot);
              struct.setExchangeNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 17: // MYSQL_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.mysql_scan_node = new TMySQLScanNode();
              struct.mysql_scan_node.read(iprot);
              struct.setMysqlScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 18: // OLAP_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.olap_scan_node = new TOlapScanNode();
              struct.olap_scan_node.read(iprot);
              struct.setOlapScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 19: // CSV_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.csv_scan_node = new TCsvScanNode();
              struct.csv_scan_node.read(iprot);
              struct.setCsvScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 20: // BROKER_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.broker_scan_node = new TBrokerScanNode();
              struct.broker_scan_node.read(iprot);
              struct.setBrokerScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 21: // PRE_AGG_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.pre_agg_node = new TPreAggregationNode();
              struct.pre_agg_node.read(iprot);
              struct.setPreAggNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 22: // SCHEMA_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.schema_scan_node = new TSchemaScanNode();
              struct.schema_scan_node.read(iprot);
              struct.setSchemaScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 23: // MERGE_JOIN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.merge_join_node = new TMergeJoinNode();
              struct.merge_join_node.read(iprot);
              struct.setMergeJoinNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 24: // META_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.meta_scan_node = new TMetaScanNode();
              struct.meta_scan_node.read(iprot);
              struct.setMetaScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 25: // ANALYTIC_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.analytic_node = new TAnalyticNode();
              struct.analytic_node.read(iprot);
              struct.setAnalyticNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 26: // OLAP_REWRITE_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.olap_rewrite_node = new TOlapRewriteNode();
              struct.olap_rewrite_node.read(iprot);
              struct.setOlapRewriteNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 28: // UNION_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.union_node = new TUnionNode();
              struct.union_node.read(iprot);
              struct.setUnionNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 29: // RESOURCE_PROFILE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.resource_profile = new TBackendResourceProfile();
              struct.resource_profile.read(iprot);
              struct.setResourceProfileIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 30: // ES_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.es_scan_node = new TEsScanNode();
              struct.es_scan_node.read(iprot);
              struct.setEsScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 31: // REPEAT_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.repeat_node = new TRepeatNode();
              struct.repeat_node.read(iprot);
              struct.setRepeatNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 32: // ASSERT_NUM_ROWS_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.assert_num_rows_node = new TAssertNumRowsNode();
              struct.assert_num_rows_node.read(iprot);
              struct.setAssertNumRowsNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 33: // INTERSECT_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.intersect_node = new TIntersectNode();
              struct.intersect_node.read(iprot);
              struct.setIntersectNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 34: // EXCEPT_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.except_node = new TExceptNode();
              struct.except_node.read(iprot);
              struct.setExceptNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 35: // ODBC_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.odbc_scan_node = new TOdbcScanNode();
              struct.odbc_scan_node.read(iprot);
              struct.setOdbcScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 36: // RUNTIME_FILTERS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1183 = iprot.readListBegin();
                struct.runtime_filters = new java.util.ArrayList<TRuntimeFilterDesc>(_list1183.size);
                @org.apache.thrift.annotation.Nullable TRuntimeFilterDesc _elem1184;
                for (int _i1185 = 0; _i1185 < _list1183.size; ++_i1185)
                {
                  _elem1184 = new TRuntimeFilterDesc();
                  _elem1184.read(iprot);
                  struct.runtime_filters.add(_elem1184);
                }
                iprot.readListEnd();
              }
              struct.setRuntimeFiltersIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 37: // GROUP_COMMIT_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.group_commit_scan_node = new TGroupCommitScanNode();
              struct.group_commit_scan_node.read(iprot);
              struct.setGroupCommitScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 38: // MATERIALIZATION_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.materialization_node = new TMaterializationNode();
              struct.materialization_node.read(iprot);
              struct.setMaterializationNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 39: // REC_CTE_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.rec_cte_node = new TRecCTENode();
              struct.rec_cte_node.read(iprot);
              struct.setRecCteNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 40: // VCONJUNCT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.vconjunct = new org.apache.doris.thrift.TExpr();
              struct.vconjunct.read(iprot);
              struct.setVconjunctIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 41: // TABLE_FUNCTION_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.table_function_node = new TTableFunctionNode();
              struct.table_function_node.read(iprot);
              struct.setTableFunctionNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 42: // OUTPUT_SLOT_IDS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1186 = iprot.readListBegin();
                struct.output_slot_ids = new java.util.ArrayList<java.lang.Integer>(_list1186.size);
                int _elem1187;
                for (int _i1188 = 0; _i1188 < _list1186.size; ++_i1188)
                {
                  _elem1187 = iprot.readI32();
                  struct.output_slot_ids.add(_elem1187);
                }
                iprot.readListEnd();
              }
              struct.setOutputSlotIdsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 43: // DATA_GEN_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.data_gen_scan_node = new TDataGenScanNode();
              struct.data_gen_scan_node.read(iprot);
              struct.setDataGenScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 44: // FILE_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.file_scan_node = new TFileScanNode();
              struct.file_scan_node.read(iprot);
              struct.setFileScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 45: // JDBC_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.jdbc_scan_node = new TJdbcScanNode();
              struct.jdbc_scan_node.read(iprot);
              struct.setJdbcScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 46: // NESTED_LOOP_JOIN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.nested_loop_join_node = new TNestedLoopJoinNode();
              struct.nested_loop_join_node.read(iprot);
              struct.setNestedLoopJoinNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 47: // TEST_EXTERNAL_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.test_external_scan_node = new TTestExternalScanNode();
              struct.test_external_scan_node.read(iprot);
              struct.setTestExternalScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 48: // PUSH_DOWN_AGG_TYPE_OPT
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.push_down_agg_type_opt = org.apache.doris.thrift.TPushAggOp.findByValue(iprot.readI32());
              struct.setPushDownAggTypeOptIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 49: // PUSH_DOWN_COUNT
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.push_down_count = iprot.readI64();
              struct.setPushDownCountIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 50: // DISTRIBUTE_EXPR_LISTS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1189 = iprot.readListBegin();
                struct.distribute_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(_list1189.size);
                @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> _elem1190;
                for (int _i1191 = 0; _i1191 < _list1189.size; ++_i1191)
                {
                  {
                    org.apache.thrift.protocol.TList _list1192 = iprot.readListBegin();
                    _elem1190 = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1192.size);
                    @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1193;
                    for (int _i1194 = 0; _i1194 < _list1192.size; ++_i1194)
                    {
                      _elem1193 = new org.apache.doris.thrift.TExpr();
                      _elem1193.read(iprot);
                      _elem1190.add(_elem1193);
                    }
                    iprot.readListEnd();
                  }
                  struct.distribute_expr_lists.add(_elem1190);
                }
                iprot.readListEnd();
              }
              struct.setDistributeExprListsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 51: // IS_SERIAL_OPERATOR
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.is_serial_operator = iprot.readBool();
              struct.setIsSerialOperatorIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 52: // REC_CTE_SCAN_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.rec_cte_scan_node = new TRecCTEScanNode();
              struct.rec_cte_scan_node.read(iprot);
              struct.setRecCteScanNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 101: // PROJECTIONS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1195 = iprot.readListBegin();
                struct.projections = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1195.size);
                @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1196;
                for (int _i1197 = 0; _i1197 < _list1195.size; ++_i1197)
                {
                  _elem1196 = new org.apache.doris.thrift.TExpr();
                  _elem1196.read(iprot);
                  struct.projections.add(_elem1196);
                }
                iprot.readListEnd();
              }
              struct.setProjectionsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 102: // OUTPUT_TUPLE_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.output_tuple_id = iprot.readI32();
              struct.setOutputTupleIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 103: // PARTITION_SORT_NODE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.partition_sort_node = new TPartitionSortNode();
              struct.partition_sort_node.read(iprot);
              struct.setPartitionSortNodeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 104: // INTERMEDIATE_PROJECTIONS_LIST
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1198 = iprot.readListBegin();
                struct.intermediate_projections_list = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(_list1198.size);
                @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> _elem1199;
                for (int _i1200 = 0; _i1200 < _list1198.size; ++_i1200)
                {
                  {
                    org.apache.thrift.protocol.TList _list1201 = iprot.readListBegin();
                    _elem1199 = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1201.size);
                    @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1202;
                    for (int _i1203 = 0; _i1203 < _list1201.size; ++_i1203)
                    {
                      _elem1202 = new org.apache.doris.thrift.TExpr();
                      _elem1202.read(iprot);
                      _elem1199.add(_elem1202);
                    }
                    iprot.readListEnd();
                  }
                  struct.intermediate_projections_list.add(_elem1199);
                }
                iprot.readListEnd();
              }
              struct.setIntermediateProjectionsListIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 105: // INTERMEDIATE_OUTPUT_TUPLE_ID_LIST
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1204 = iprot.readListBegin();
                struct.intermediate_output_tuple_id_list = new java.util.ArrayList<java.lang.Integer>(_list1204.size);
                int _elem1205;
                for (int _i1206 = 0; _i1206 < _list1204.size; ++_i1206)
                {
                  _elem1205 = iprot.readI32();
                  struct.intermediate_output_tuple_id_list.add(_elem1205);
                }
                iprot.readListEnd();
              }
              struct.setIntermediateOutputTupleIdListIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 106: // TOPN_FILTER_SOURCE_NODE_IDS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list1207 = iprot.readListBegin();
                struct.topn_filter_source_node_ids = new java.util.ArrayList<java.lang.Integer>(_list1207.size);
                int _elem1208;
                for (int _i1209 = 0; _i1209 < _list1207.size; ++_i1209)
                {
                  _elem1208 = iprot.readI32();
                  struct.topn_filter_source_node_ids.add(_elem1208);
                }
                iprot.readListEnd();
              }
              struct.setTopnFilterSourceNodeIdsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 107: // NEREIDS_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.nereids_id = iprot.readI32();
              struct.setNereidsIdIsSet(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
      if (!struct.isSetNodeId()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'node_id' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetNumChildren()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'num_children' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetLimit()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'limit' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetCompactData()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'compact_data' was not found in serialized data! Struct: " + toString());
      }
      struct.validate();
    }

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

      oprot.writeStructBegin(STRUCT_DESC);
      oprot.writeFieldBegin(NODE_ID_FIELD_DESC);
      oprot.writeI32(struct.node_id);
      oprot.writeFieldEnd();
      if (struct.node_type != null) {
        oprot.writeFieldBegin(NODE_TYPE_FIELD_DESC);
        oprot.writeI32(struct.node_type.getValue());
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(NUM_CHILDREN_FIELD_DESC);
      oprot.writeI32(struct.num_children);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(LIMIT_FIELD_DESC);
      oprot.writeI64(struct.limit);
      oprot.writeFieldEnd();
      if (struct.row_tuples != null) {
        oprot.writeFieldBegin(ROW_TUPLES_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.row_tuples.size()));
          for (int _iter1210 : struct.row_tuples)
          {
            oprot.writeI32(_iter1210);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.nullable_tuples != null) {
        oprot.writeFieldBegin(NULLABLE_TUPLES_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.BOOL, struct.nullable_tuples.size()));
          for (boolean _iter1211 : struct.nullable_tuples)
          {
            oprot.writeBool(_iter1211);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.conjuncts != null) {
        if (struct.isSetConjuncts()) {
          oprot.writeFieldBegin(CONJUNCTS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.conjuncts.size()));
            for (org.apache.doris.thrift.TExpr _iter1212 : struct.conjuncts)
            {
              _iter1212.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      oprot.writeFieldBegin(COMPACT_DATA_FIELD_DESC);
      oprot.writeBool(struct.compact_data);
      oprot.writeFieldEnd();
      if (struct.hash_join_node != null) {
        if (struct.isSetHashJoinNode()) {
          oprot.writeFieldBegin(HASH_JOIN_NODE_FIELD_DESC);
          struct.hash_join_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.agg_node != null) {
        if (struct.isSetAggNode()) {
          oprot.writeFieldBegin(AGG_NODE_FIELD_DESC);
          struct.agg_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.sort_node != null) {
        if (struct.isSetSortNode()) {
          oprot.writeFieldBegin(SORT_NODE_FIELD_DESC);
          struct.sort_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.merge_node != null) {
        if (struct.isSetMergeNode()) {
          oprot.writeFieldBegin(MERGE_NODE_FIELD_DESC);
          struct.merge_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.exchange_node != null) {
        if (struct.isSetExchangeNode()) {
          oprot.writeFieldBegin(EXCHANGE_NODE_FIELD_DESC);
          struct.exchange_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.mysql_scan_node != null) {
        if (struct.isSetMysqlScanNode()) {
          oprot.writeFieldBegin(MYSQL_SCAN_NODE_FIELD_DESC);
          struct.mysql_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.olap_scan_node != null) {
        if (struct.isSetOlapScanNode()) {
          oprot.writeFieldBegin(OLAP_SCAN_NODE_FIELD_DESC);
          struct.olap_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.csv_scan_node != null) {
        if (struct.isSetCsvScanNode()) {
          oprot.writeFieldBegin(CSV_SCAN_NODE_FIELD_DESC);
          struct.csv_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.broker_scan_node != null) {
        if (struct.isSetBrokerScanNode()) {
          oprot.writeFieldBegin(BROKER_SCAN_NODE_FIELD_DESC);
          struct.broker_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.pre_agg_node != null) {
        if (struct.isSetPreAggNode()) {
          oprot.writeFieldBegin(PRE_AGG_NODE_FIELD_DESC);
          struct.pre_agg_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.schema_scan_node != null) {
        if (struct.isSetSchemaScanNode()) {
          oprot.writeFieldBegin(SCHEMA_SCAN_NODE_FIELD_DESC);
          struct.schema_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.merge_join_node != null) {
        if (struct.isSetMergeJoinNode()) {
          oprot.writeFieldBegin(MERGE_JOIN_NODE_FIELD_DESC);
          struct.merge_join_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.meta_scan_node != null) {
        if (struct.isSetMetaScanNode()) {
          oprot.writeFieldBegin(META_SCAN_NODE_FIELD_DESC);
          struct.meta_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.analytic_node != null) {
        if (struct.isSetAnalyticNode()) {
          oprot.writeFieldBegin(ANALYTIC_NODE_FIELD_DESC);
          struct.analytic_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.olap_rewrite_node != null) {
        if (struct.isSetOlapRewriteNode()) {
          oprot.writeFieldBegin(OLAP_REWRITE_NODE_FIELD_DESC);
          struct.olap_rewrite_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.union_node != null) {
        if (struct.isSetUnionNode()) {
          oprot.writeFieldBegin(UNION_NODE_FIELD_DESC);
          struct.union_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.resource_profile != null) {
        if (struct.isSetResourceProfile()) {
          oprot.writeFieldBegin(RESOURCE_PROFILE_FIELD_DESC);
          struct.resource_profile.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.es_scan_node != null) {
        if (struct.isSetEsScanNode()) {
          oprot.writeFieldBegin(ES_SCAN_NODE_FIELD_DESC);
          struct.es_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.repeat_node != null) {
        if (struct.isSetRepeatNode()) {
          oprot.writeFieldBegin(REPEAT_NODE_FIELD_DESC);
          struct.repeat_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.assert_num_rows_node != null) {
        if (struct.isSetAssertNumRowsNode()) {
          oprot.writeFieldBegin(ASSERT_NUM_ROWS_NODE_FIELD_DESC);
          struct.assert_num_rows_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.intersect_node != null) {
        if (struct.isSetIntersectNode()) {
          oprot.writeFieldBegin(INTERSECT_NODE_FIELD_DESC);
          struct.intersect_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.except_node != null) {
        if (struct.isSetExceptNode()) {
          oprot.writeFieldBegin(EXCEPT_NODE_FIELD_DESC);
          struct.except_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.odbc_scan_node != null) {
        if (struct.isSetOdbcScanNode()) {
          oprot.writeFieldBegin(ODBC_SCAN_NODE_FIELD_DESC);
          struct.odbc_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.runtime_filters != null) {
        if (struct.isSetRuntimeFilters()) {
          oprot.writeFieldBegin(RUNTIME_FILTERS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.runtime_filters.size()));
            for (TRuntimeFilterDesc _iter1213 : struct.runtime_filters)
            {
              _iter1213.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.group_commit_scan_node != null) {
        if (struct.isSetGroupCommitScanNode()) {
          oprot.writeFieldBegin(GROUP_COMMIT_SCAN_NODE_FIELD_DESC);
          struct.group_commit_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.materialization_node != null) {
        if (struct.isSetMaterializationNode()) {
          oprot.writeFieldBegin(MATERIALIZATION_NODE_FIELD_DESC);
          struct.materialization_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.rec_cte_node != null) {
        if (struct.isSetRecCteNode()) {
          oprot.writeFieldBegin(REC_CTE_NODE_FIELD_DESC);
          struct.rec_cte_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.vconjunct != null) {
        if (struct.isSetVconjunct()) {
          oprot.writeFieldBegin(VCONJUNCT_FIELD_DESC);
          struct.vconjunct.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.table_function_node != null) {
        if (struct.isSetTableFunctionNode()) {
          oprot.writeFieldBegin(TABLE_FUNCTION_NODE_FIELD_DESC);
          struct.table_function_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.output_slot_ids != null) {
        if (struct.isSetOutputSlotIds()) {
          oprot.writeFieldBegin(OUTPUT_SLOT_IDS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.output_slot_ids.size()));
            for (int _iter1214 : struct.output_slot_ids)
            {
              oprot.writeI32(_iter1214);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.data_gen_scan_node != null) {
        if (struct.isSetDataGenScanNode()) {
          oprot.writeFieldBegin(DATA_GEN_SCAN_NODE_FIELD_DESC);
          struct.data_gen_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.file_scan_node != null) {
        if (struct.isSetFileScanNode()) {
          oprot.writeFieldBegin(FILE_SCAN_NODE_FIELD_DESC);
          struct.file_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.jdbc_scan_node != null) {
        if (struct.isSetJdbcScanNode()) {
          oprot.writeFieldBegin(JDBC_SCAN_NODE_FIELD_DESC);
          struct.jdbc_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.nested_loop_join_node != null) {
        if (struct.isSetNestedLoopJoinNode()) {
          oprot.writeFieldBegin(NESTED_LOOP_JOIN_NODE_FIELD_DESC);
          struct.nested_loop_join_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.test_external_scan_node != null) {
        if (struct.isSetTestExternalScanNode()) {
          oprot.writeFieldBegin(TEST_EXTERNAL_SCAN_NODE_FIELD_DESC);
          struct.test_external_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.push_down_agg_type_opt != null) {
        if (struct.isSetPushDownAggTypeOpt()) {
          oprot.writeFieldBegin(PUSH_DOWN_AGG_TYPE_OPT_FIELD_DESC);
          oprot.writeI32(struct.push_down_agg_type_opt.getValue());
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetPushDownCount()) {
        oprot.writeFieldBegin(PUSH_DOWN_COUNT_FIELD_DESC);
        oprot.writeI64(struct.push_down_count);
        oprot.writeFieldEnd();
      }
      if (struct.distribute_expr_lists != null) {
        if (struct.isSetDistributeExprLists()) {
          oprot.writeFieldBegin(DISTRIBUTE_EXPR_LISTS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.LIST, struct.distribute_expr_lists.size()));
            for (java.util.List<org.apache.doris.thrift.TExpr> _iter1215 : struct.distribute_expr_lists)
            {
              {
                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter1215.size()));
                for (org.apache.doris.thrift.TExpr _iter1216 : _iter1215)
                {
                  _iter1216.write(oprot);
                }
                oprot.writeListEnd();
              }
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetIsSerialOperator()) {
        oprot.writeFieldBegin(IS_SERIAL_OPERATOR_FIELD_DESC);
        oprot.writeBool(struct.is_serial_operator);
        oprot.writeFieldEnd();
      }
      if (struct.rec_cte_scan_node != null) {
        if (struct.isSetRecCteScanNode()) {
          oprot.writeFieldBegin(REC_CTE_SCAN_NODE_FIELD_DESC);
          struct.rec_cte_scan_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.projections != null) {
        if (struct.isSetProjections()) {
          oprot.writeFieldBegin(PROJECTIONS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.projections.size()));
            for (org.apache.doris.thrift.TExpr _iter1217 : struct.projections)
            {
              _iter1217.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetOutputTupleId()) {
        oprot.writeFieldBegin(OUTPUT_TUPLE_ID_FIELD_DESC);
        oprot.writeI32(struct.output_tuple_id);
        oprot.writeFieldEnd();
      }
      if (struct.partition_sort_node != null) {
        if (struct.isSetPartitionSortNode()) {
          oprot.writeFieldBegin(PARTITION_SORT_NODE_FIELD_DESC);
          struct.partition_sort_node.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.intermediate_projections_list != null) {
        if (struct.isSetIntermediateProjectionsList()) {
          oprot.writeFieldBegin(INTERMEDIATE_PROJECTIONS_LIST_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.LIST, struct.intermediate_projections_list.size()));
            for (java.util.List<org.apache.doris.thrift.TExpr> _iter1218 : struct.intermediate_projections_list)
            {
              {
                oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, _iter1218.size()));
                for (org.apache.doris.thrift.TExpr _iter1219 : _iter1218)
                {
                  _iter1219.write(oprot);
                }
                oprot.writeListEnd();
              }
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.intermediate_output_tuple_id_list != null) {
        if (struct.isSetIntermediateOutputTupleIdList()) {
          oprot.writeFieldBegin(INTERMEDIATE_OUTPUT_TUPLE_ID_LIST_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.intermediate_output_tuple_id_list.size()));
            for (int _iter1220 : struct.intermediate_output_tuple_id_list)
            {
              oprot.writeI32(_iter1220);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.topn_filter_source_node_ids != null) {
        if (struct.isSetTopnFilterSourceNodeIds()) {
          oprot.writeFieldBegin(TOPN_FILTER_SOURCE_NODE_IDS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I32, struct.topn_filter_source_node_ids.size()));
            for (int _iter1221 : struct.topn_filter_source_node_ids)
            {
              oprot.writeI32(_iter1221);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetNereidsId()) {
        oprot.writeFieldBegin(NEREIDS_ID_FIELD_DESC);
        oprot.writeI32(struct.nereids_id);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

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

  private static class TPlanNodeTupleScheme extends org.apache.thrift.scheme.TupleScheme<TPlanNode> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, TPlanNode struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      oprot.writeI32(struct.node_id);
      oprot.writeI32(struct.node_type.getValue());
      oprot.writeI32(struct.num_children);
      oprot.writeI64(struct.limit);
      {
        oprot.writeI32(struct.row_tuples.size());
        for (int _iter1222 : struct.row_tuples)
        {
          oprot.writeI32(_iter1222);
        }
      }
      {
        oprot.writeI32(struct.nullable_tuples.size());
        for (boolean _iter1223 : struct.nullable_tuples)
        {
          oprot.writeBool(_iter1223);
        }
      }
      oprot.writeBool(struct.compact_data);
      java.util.BitSet optionals = new java.util.BitSet();
      if (struct.isSetConjuncts()) {
        optionals.set(0);
      }
      if (struct.isSetHashJoinNode()) {
        optionals.set(1);
      }
      if (struct.isSetAggNode()) {
        optionals.set(2);
      }
      if (struct.isSetSortNode()) {
        optionals.set(3);
      }
      if (struct.isSetMergeNode()) {
        optionals.set(4);
      }
      if (struct.isSetExchangeNode()) {
        optionals.set(5);
      }
      if (struct.isSetMysqlScanNode()) {
        optionals.set(6);
      }
      if (struct.isSetOlapScanNode()) {
        optionals.set(7);
      }
      if (struct.isSetCsvScanNode()) {
        optionals.set(8);
      }
      if (struct.isSetBrokerScanNode()) {
        optionals.set(9);
      }
      if (struct.isSetPreAggNode()) {
        optionals.set(10);
      }
      if (struct.isSetSchemaScanNode()) {
        optionals.set(11);
      }
      if (struct.isSetMergeJoinNode()) {
        optionals.set(12);
      }
      if (struct.isSetMetaScanNode()) {
        optionals.set(13);
      }
      if (struct.isSetAnalyticNode()) {
        optionals.set(14);
      }
      if (struct.isSetOlapRewriteNode()) {
        optionals.set(15);
      }
      if (struct.isSetUnionNode()) {
        optionals.set(16);
      }
      if (struct.isSetResourceProfile()) {
        optionals.set(17);
      }
      if (struct.isSetEsScanNode()) {
        optionals.set(18);
      }
      if (struct.isSetRepeatNode()) {
        optionals.set(19);
      }
      if (struct.isSetAssertNumRowsNode()) {
        optionals.set(20);
      }
      if (struct.isSetIntersectNode()) {
        optionals.set(21);
      }
      if (struct.isSetExceptNode()) {
        optionals.set(22);
      }
      if (struct.isSetOdbcScanNode()) {
        optionals.set(23);
      }
      if (struct.isSetRuntimeFilters()) {
        optionals.set(24);
      }
      if (struct.isSetGroupCommitScanNode()) {
        optionals.set(25);
      }
      if (struct.isSetMaterializationNode()) {
        optionals.set(26);
      }
      if (struct.isSetRecCteNode()) {
        optionals.set(27);
      }
      if (struct.isSetVconjunct()) {
        optionals.set(28);
      }
      if (struct.isSetTableFunctionNode()) {
        optionals.set(29);
      }
      if (struct.isSetOutputSlotIds()) {
        optionals.set(30);
      }
      if (struct.isSetDataGenScanNode()) {
        optionals.set(31);
      }
      if (struct.isSetFileScanNode()) {
        optionals.set(32);
      }
      if (struct.isSetJdbcScanNode()) {
        optionals.set(33);
      }
      if (struct.isSetNestedLoopJoinNode()) {
        optionals.set(34);
      }
      if (struct.isSetTestExternalScanNode()) {
        optionals.set(35);
      }
      if (struct.isSetPushDownAggTypeOpt()) {
        optionals.set(36);
      }
      if (struct.isSetPushDownCount()) {
        optionals.set(37);
      }
      if (struct.isSetDistributeExprLists()) {
        optionals.set(38);
      }
      if (struct.isSetIsSerialOperator()) {
        optionals.set(39);
      }
      if (struct.isSetRecCteScanNode()) {
        optionals.set(40);
      }
      if (struct.isSetProjections()) {
        optionals.set(41);
      }
      if (struct.isSetOutputTupleId()) {
        optionals.set(42);
      }
      if (struct.isSetPartitionSortNode()) {
        optionals.set(43);
      }
      if (struct.isSetIntermediateProjectionsList()) {
        optionals.set(44);
      }
      if (struct.isSetIntermediateOutputTupleIdList()) {
        optionals.set(45);
      }
      if (struct.isSetTopnFilterSourceNodeIds()) {
        optionals.set(46);
      }
      if (struct.isSetNereidsId()) {
        optionals.set(47);
      }
      oprot.writeBitSet(optionals, 48);
      if (struct.isSetConjuncts()) {
        {
          oprot.writeI32(struct.conjuncts.size());
          for (org.apache.doris.thrift.TExpr _iter1224 : struct.conjuncts)
          {
            _iter1224.write(oprot);
          }
        }
      }
      if (struct.isSetHashJoinNode()) {
        struct.hash_join_node.write(oprot);
      }
      if (struct.isSetAggNode()) {
        struct.agg_node.write(oprot);
      }
      if (struct.isSetSortNode()) {
        struct.sort_node.write(oprot);
      }
      if (struct.isSetMergeNode()) {
        struct.merge_node.write(oprot);
      }
      if (struct.isSetExchangeNode()) {
        struct.exchange_node.write(oprot);
      }
      if (struct.isSetMysqlScanNode()) {
        struct.mysql_scan_node.write(oprot);
      }
      if (struct.isSetOlapScanNode()) {
        struct.olap_scan_node.write(oprot);
      }
      if (struct.isSetCsvScanNode()) {
        struct.csv_scan_node.write(oprot);
      }
      if (struct.isSetBrokerScanNode()) {
        struct.broker_scan_node.write(oprot);
      }
      if (struct.isSetPreAggNode()) {
        struct.pre_agg_node.write(oprot);
      }
      if (struct.isSetSchemaScanNode()) {
        struct.schema_scan_node.write(oprot);
      }
      if (struct.isSetMergeJoinNode()) {
        struct.merge_join_node.write(oprot);
      }
      if (struct.isSetMetaScanNode()) {
        struct.meta_scan_node.write(oprot);
      }
      if (struct.isSetAnalyticNode()) {
        struct.analytic_node.write(oprot);
      }
      if (struct.isSetOlapRewriteNode()) {
        struct.olap_rewrite_node.write(oprot);
      }
      if (struct.isSetUnionNode()) {
        struct.union_node.write(oprot);
      }
      if (struct.isSetResourceProfile()) {
        struct.resource_profile.write(oprot);
      }
      if (struct.isSetEsScanNode()) {
        struct.es_scan_node.write(oprot);
      }
      if (struct.isSetRepeatNode()) {
        struct.repeat_node.write(oprot);
      }
      if (struct.isSetAssertNumRowsNode()) {
        struct.assert_num_rows_node.write(oprot);
      }
      if (struct.isSetIntersectNode()) {
        struct.intersect_node.write(oprot);
      }
      if (struct.isSetExceptNode()) {
        struct.except_node.write(oprot);
      }
      if (struct.isSetOdbcScanNode()) {
        struct.odbc_scan_node.write(oprot);
      }
      if (struct.isSetRuntimeFilters()) {
        {
          oprot.writeI32(struct.runtime_filters.size());
          for (TRuntimeFilterDesc _iter1225 : struct.runtime_filters)
          {
            _iter1225.write(oprot);
          }
        }
      }
      if (struct.isSetGroupCommitScanNode()) {
        struct.group_commit_scan_node.write(oprot);
      }
      if (struct.isSetMaterializationNode()) {
        struct.materialization_node.write(oprot);
      }
      if (struct.isSetRecCteNode()) {
        struct.rec_cte_node.write(oprot);
      }
      if (struct.isSetVconjunct()) {
        struct.vconjunct.write(oprot);
      }
      if (struct.isSetTableFunctionNode()) {
        struct.table_function_node.write(oprot);
      }
      if (struct.isSetOutputSlotIds()) {
        {
          oprot.writeI32(struct.output_slot_ids.size());
          for (int _iter1226 : struct.output_slot_ids)
          {
            oprot.writeI32(_iter1226);
          }
        }
      }
      if (struct.isSetDataGenScanNode()) {
        struct.data_gen_scan_node.write(oprot);
      }
      if (struct.isSetFileScanNode()) {
        struct.file_scan_node.write(oprot);
      }
      if (struct.isSetJdbcScanNode()) {
        struct.jdbc_scan_node.write(oprot);
      }
      if (struct.isSetNestedLoopJoinNode()) {
        struct.nested_loop_join_node.write(oprot);
      }
      if (struct.isSetTestExternalScanNode()) {
        struct.test_external_scan_node.write(oprot);
      }
      if (struct.isSetPushDownAggTypeOpt()) {
        oprot.writeI32(struct.push_down_agg_type_opt.getValue());
      }
      if (struct.isSetPushDownCount()) {
        oprot.writeI64(struct.push_down_count);
      }
      if (struct.isSetDistributeExprLists()) {
        {
          oprot.writeI32(struct.distribute_expr_lists.size());
          for (java.util.List<org.apache.doris.thrift.TExpr> _iter1227 : struct.distribute_expr_lists)
          {
            {
              oprot.writeI32(_iter1227.size());
              for (org.apache.doris.thrift.TExpr _iter1228 : _iter1227)
              {
                _iter1228.write(oprot);
              }
            }
          }
        }
      }
      if (struct.isSetIsSerialOperator()) {
        oprot.writeBool(struct.is_serial_operator);
      }
      if (struct.isSetRecCteScanNode()) {
        struct.rec_cte_scan_node.write(oprot);
      }
      if (struct.isSetProjections()) {
        {
          oprot.writeI32(struct.projections.size());
          for (org.apache.doris.thrift.TExpr _iter1229 : struct.projections)
          {
            _iter1229.write(oprot);
          }
        }
      }
      if (struct.isSetOutputTupleId()) {
        oprot.writeI32(struct.output_tuple_id);
      }
      if (struct.isSetPartitionSortNode()) {
        struct.partition_sort_node.write(oprot);
      }
      if (struct.isSetIntermediateProjectionsList()) {
        {
          oprot.writeI32(struct.intermediate_projections_list.size());
          for (java.util.List<org.apache.doris.thrift.TExpr> _iter1230 : struct.intermediate_projections_list)
          {
            {
              oprot.writeI32(_iter1230.size());
              for (org.apache.doris.thrift.TExpr _iter1231 : _iter1230)
              {
                _iter1231.write(oprot);
              }
            }
          }
        }
      }
      if (struct.isSetIntermediateOutputTupleIdList()) {
        {
          oprot.writeI32(struct.intermediate_output_tuple_id_list.size());
          for (int _iter1232 : struct.intermediate_output_tuple_id_list)
          {
            oprot.writeI32(_iter1232);
          }
        }
      }
      if (struct.isSetTopnFilterSourceNodeIds()) {
        {
          oprot.writeI32(struct.topn_filter_source_node_ids.size());
          for (int _iter1233 : struct.topn_filter_source_node_ids)
          {
            oprot.writeI32(_iter1233);
          }
        }
      }
      if (struct.isSetNereidsId()) {
        oprot.writeI32(struct.nereids_id);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, TPlanNode struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      struct.node_id = iprot.readI32();
      struct.setNodeIdIsSet(true);
      struct.node_type = org.apache.doris.thrift.TPlanNodeType.findByValue(iprot.readI32());
      struct.setNodeTypeIsSet(true);
      struct.num_children = iprot.readI32();
      struct.setNumChildrenIsSet(true);
      struct.limit = iprot.readI64();
      struct.setLimitIsSet(true);
      {
        org.apache.thrift.protocol.TList _list1234 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
        struct.row_tuples = new java.util.ArrayList<java.lang.Integer>(_list1234.size);
        int _elem1235;
        for (int _i1236 = 0; _i1236 < _list1234.size; ++_i1236)
        {
          _elem1235 = iprot.readI32();
          struct.row_tuples.add(_elem1235);
        }
      }
      struct.setRowTuplesIsSet(true);
      {
        org.apache.thrift.protocol.TList _list1237 = iprot.readListBegin(org.apache.thrift.protocol.TType.BOOL);
        struct.nullable_tuples = new java.util.ArrayList<java.lang.Boolean>(_list1237.size);
        boolean _elem1238;
        for (int _i1239 = 0; _i1239 < _list1237.size; ++_i1239)
        {
          _elem1238 = iprot.readBool();
          struct.nullable_tuples.add(_elem1238);
        }
      }
      struct.setNullableTuplesIsSet(true);
      struct.compact_data = iprot.readBool();
      struct.setCompactDataIsSet(true);
      java.util.BitSet incoming = iprot.readBitSet(48);
      if (incoming.get(0)) {
        {
          org.apache.thrift.protocol.TList _list1240 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
          struct.conjuncts = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1240.size);
          @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1241;
          for (int _i1242 = 0; _i1242 < _list1240.size; ++_i1242)
          {
            _elem1241 = new org.apache.doris.thrift.TExpr();
            _elem1241.read(iprot);
            struct.conjuncts.add(_elem1241);
          }
        }
        struct.setConjunctsIsSet(true);
      }
      if (incoming.get(1)) {
        struct.hash_join_node = new THashJoinNode();
        struct.hash_join_node.read(iprot);
        struct.setHashJoinNodeIsSet(true);
      }
      if (incoming.get(2)) {
        struct.agg_node = new TAggregationNode();
        struct.agg_node.read(iprot);
        struct.setAggNodeIsSet(true);
      }
      if (incoming.get(3)) {
        struct.sort_node = new TSortNode();
        struct.sort_node.read(iprot);
        struct.setSortNodeIsSet(true);
      }
      if (incoming.get(4)) {
        struct.merge_node = new TMergeNode();
        struct.merge_node.read(iprot);
        struct.setMergeNodeIsSet(true);
      }
      if (incoming.get(5)) {
        struct.exchange_node = new TExchangeNode();
        struct.exchange_node.read(iprot);
        struct.setExchangeNodeIsSet(true);
      }
      if (incoming.get(6)) {
        struct.mysql_scan_node = new TMySQLScanNode();
        struct.mysql_scan_node.read(iprot);
        struct.setMysqlScanNodeIsSet(true);
      }
      if (incoming.get(7)) {
        struct.olap_scan_node = new TOlapScanNode();
        struct.olap_scan_node.read(iprot);
        struct.setOlapScanNodeIsSet(true);
      }
      if (incoming.get(8)) {
        struct.csv_scan_node = new TCsvScanNode();
        struct.csv_scan_node.read(iprot);
        struct.setCsvScanNodeIsSet(true);
      }
      if (incoming.get(9)) {
        struct.broker_scan_node = new TBrokerScanNode();
        struct.broker_scan_node.read(iprot);
        struct.setBrokerScanNodeIsSet(true);
      }
      if (incoming.get(10)) {
        struct.pre_agg_node = new TPreAggregationNode();
        struct.pre_agg_node.read(iprot);
        struct.setPreAggNodeIsSet(true);
      }
      if (incoming.get(11)) {
        struct.schema_scan_node = new TSchemaScanNode();
        struct.schema_scan_node.read(iprot);
        struct.setSchemaScanNodeIsSet(true);
      }
      if (incoming.get(12)) {
        struct.merge_join_node = new TMergeJoinNode();
        struct.merge_join_node.read(iprot);
        struct.setMergeJoinNodeIsSet(true);
      }
      if (incoming.get(13)) {
        struct.meta_scan_node = new TMetaScanNode();
        struct.meta_scan_node.read(iprot);
        struct.setMetaScanNodeIsSet(true);
      }
      if (incoming.get(14)) {
        struct.analytic_node = new TAnalyticNode();
        struct.analytic_node.read(iprot);
        struct.setAnalyticNodeIsSet(true);
      }
      if (incoming.get(15)) {
        struct.olap_rewrite_node = new TOlapRewriteNode();
        struct.olap_rewrite_node.read(iprot);
        struct.setOlapRewriteNodeIsSet(true);
      }
      if (incoming.get(16)) {
        struct.union_node = new TUnionNode();
        struct.union_node.read(iprot);
        struct.setUnionNodeIsSet(true);
      }
      if (incoming.get(17)) {
        struct.resource_profile = new TBackendResourceProfile();
        struct.resource_profile.read(iprot);
        struct.setResourceProfileIsSet(true);
      }
      if (incoming.get(18)) {
        struct.es_scan_node = new TEsScanNode();
        struct.es_scan_node.read(iprot);
        struct.setEsScanNodeIsSet(true);
      }
      if (incoming.get(19)) {
        struct.repeat_node = new TRepeatNode();
        struct.repeat_node.read(iprot);
        struct.setRepeatNodeIsSet(true);
      }
      if (incoming.get(20)) {
        struct.assert_num_rows_node = new TAssertNumRowsNode();
        struct.assert_num_rows_node.read(iprot);
        struct.setAssertNumRowsNodeIsSet(true);
      }
      if (incoming.get(21)) {
        struct.intersect_node = new TIntersectNode();
        struct.intersect_node.read(iprot);
        struct.setIntersectNodeIsSet(true);
      }
      if (incoming.get(22)) {
        struct.except_node = new TExceptNode();
        struct.except_node.read(iprot);
        struct.setExceptNodeIsSet(true);
      }
      if (incoming.get(23)) {
        struct.odbc_scan_node = new TOdbcScanNode();
        struct.odbc_scan_node.read(iprot);
        struct.setOdbcScanNodeIsSet(true);
      }
      if (incoming.get(24)) {
        {
          org.apache.thrift.protocol.TList _list1243 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
          struct.runtime_filters = new java.util.ArrayList<TRuntimeFilterDesc>(_list1243.size);
          @org.apache.thrift.annotation.Nullable TRuntimeFilterDesc _elem1244;
          for (int _i1245 = 0; _i1245 < _list1243.size; ++_i1245)
          {
            _elem1244 = new TRuntimeFilterDesc();
            _elem1244.read(iprot);
            struct.runtime_filters.add(_elem1244);
          }
        }
        struct.setRuntimeFiltersIsSet(true);
      }
      if (incoming.get(25)) {
        struct.group_commit_scan_node = new TGroupCommitScanNode();
        struct.group_commit_scan_node.read(iprot);
        struct.setGroupCommitScanNodeIsSet(true);
      }
      if (incoming.get(26)) {
        struct.materialization_node = new TMaterializationNode();
        struct.materialization_node.read(iprot);
        struct.setMaterializationNodeIsSet(true);
      }
      if (incoming.get(27)) {
        struct.rec_cte_node = new TRecCTENode();
        struct.rec_cte_node.read(iprot);
        struct.setRecCteNodeIsSet(true);
      }
      if (incoming.get(28)) {
        struct.vconjunct = new org.apache.doris.thrift.TExpr();
        struct.vconjunct.read(iprot);
        struct.setVconjunctIsSet(true);
      }
      if (incoming.get(29)) {
        struct.table_function_node = new TTableFunctionNode();
        struct.table_function_node.read(iprot);
        struct.setTableFunctionNodeIsSet(true);
      }
      if (incoming.get(30)) {
        {
          org.apache.thrift.protocol.TList _list1246 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
          struct.output_slot_ids = new java.util.ArrayList<java.lang.Integer>(_list1246.size);
          int _elem1247;
          for (int _i1248 = 0; _i1248 < _list1246.size; ++_i1248)
          {
            _elem1247 = iprot.readI32();
            struct.output_slot_ids.add(_elem1247);
          }
        }
        struct.setOutputSlotIdsIsSet(true);
      }
      if (incoming.get(31)) {
        struct.data_gen_scan_node = new TDataGenScanNode();
        struct.data_gen_scan_node.read(iprot);
        struct.setDataGenScanNodeIsSet(true);
      }
      if (incoming.get(32)) {
        struct.file_scan_node = new TFileScanNode();
        struct.file_scan_node.read(iprot);
        struct.setFileScanNodeIsSet(true);
      }
      if (incoming.get(33)) {
        struct.jdbc_scan_node = new TJdbcScanNode();
        struct.jdbc_scan_node.read(iprot);
        struct.setJdbcScanNodeIsSet(true);
      }
      if (incoming.get(34)) {
        struct.nested_loop_join_node = new TNestedLoopJoinNode();
        struct.nested_loop_join_node.read(iprot);
        struct.setNestedLoopJoinNodeIsSet(true);
      }
      if (incoming.get(35)) {
        struct.test_external_scan_node = new TTestExternalScanNode();
        struct.test_external_scan_node.read(iprot);
        struct.setTestExternalScanNodeIsSet(true);
      }
      if (incoming.get(36)) {
        struct.push_down_agg_type_opt = org.apache.doris.thrift.TPushAggOp.findByValue(iprot.readI32());
        struct.setPushDownAggTypeOptIsSet(true);
      }
      if (incoming.get(37)) {
        struct.push_down_count = iprot.readI64();
        struct.setPushDownCountIsSet(true);
      }
      if (incoming.get(38)) {
        {
          org.apache.thrift.protocol.TList _list1249 = iprot.readListBegin(org.apache.thrift.protocol.TType.LIST);
          struct.distribute_expr_lists = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(_list1249.size);
          @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> _elem1250;
          for (int _i1251 = 0; _i1251 < _list1249.size; ++_i1251)
          {
            {
              org.apache.thrift.protocol.TList _list1252 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
              _elem1250 = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1252.size);
              @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1253;
              for (int _i1254 = 0; _i1254 < _list1252.size; ++_i1254)
              {
                _elem1253 = new org.apache.doris.thrift.TExpr();
                _elem1253.read(iprot);
                _elem1250.add(_elem1253);
              }
            }
            struct.distribute_expr_lists.add(_elem1250);
          }
        }
        struct.setDistributeExprListsIsSet(true);
      }
      if (incoming.get(39)) {
        struct.is_serial_operator = iprot.readBool();
        struct.setIsSerialOperatorIsSet(true);
      }
      if (incoming.get(40)) {
        struct.rec_cte_scan_node = new TRecCTEScanNode();
        struct.rec_cte_scan_node.read(iprot);
        struct.setRecCteScanNodeIsSet(true);
      }
      if (incoming.get(41)) {
        {
          org.apache.thrift.protocol.TList _list1255 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
          struct.projections = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1255.size);
          @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1256;
          for (int _i1257 = 0; _i1257 < _list1255.size; ++_i1257)
          {
            _elem1256 = new org.apache.doris.thrift.TExpr();
            _elem1256.read(iprot);
            struct.projections.add(_elem1256);
          }
        }
        struct.setProjectionsIsSet(true);
      }
      if (incoming.get(42)) {
        struct.output_tuple_id = iprot.readI32();
        struct.setOutputTupleIdIsSet(true);
      }
      if (incoming.get(43)) {
        struct.partition_sort_node = new TPartitionSortNode();
        struct.partition_sort_node.read(iprot);
        struct.setPartitionSortNodeIsSet(true);
      }
      if (incoming.get(44)) {
        {
          org.apache.thrift.protocol.TList _list1258 = iprot.readListBegin(org.apache.thrift.protocol.TType.LIST);
          struct.intermediate_projections_list = new java.util.ArrayList<java.util.List<org.apache.doris.thrift.TExpr>>(_list1258.size);
          @org.apache.thrift.annotation.Nullable java.util.List<org.apache.doris.thrift.TExpr> _elem1259;
          for (int _i1260 = 0; _i1260 < _list1258.size; ++_i1260)
          {
            {
              org.apache.thrift.protocol.TList _list1261 = iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
              _elem1259 = new java.util.ArrayList<org.apache.doris.thrift.TExpr>(_list1261.size);
              @org.apache.thrift.annotation.Nullable org.apache.doris.thrift.TExpr _elem1262;
              for (int _i1263 = 0; _i1263 < _list1261.size; ++_i1263)
              {
                _elem1262 = new org.apache.doris.thrift.TExpr();
                _elem1262.read(iprot);
                _elem1259.add(_elem1262);
              }
            }
            struct.intermediate_projections_list.add(_elem1259);
          }
        }
        struct.setIntermediateProjectionsListIsSet(true);
      }
      if (incoming.get(45)) {
        {
          org.apache.thrift.protocol.TList _list1264 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
          struct.intermediate_output_tuple_id_list = new java.util.ArrayList<java.lang.Integer>(_list1264.size);
          int _elem1265;
          for (int _i1266 = 0; _i1266 < _list1264.size; ++_i1266)
          {
            _elem1265 = iprot.readI32();
            struct.intermediate_output_tuple_id_list.add(_elem1265);
          }
        }
        struct.setIntermediateOutputTupleIdListIsSet(true);
      }
      if (incoming.get(46)) {
        {
          org.apache.thrift.protocol.TList _list1267 = iprot.readListBegin(org.apache.thrift.protocol.TType.I32);
          struct.topn_filter_source_node_ids = new java.util.ArrayList<java.lang.Integer>(_list1267.size);
          int _elem1268;
          for (int _i1269 = 0; _i1269 < _list1267.size; ++_i1269)
          {
            _elem1268 = iprot.readI32();
            struct.topn_filter_source_node_ids.add(_elem1268);
          }
        }
        struct.setTopnFilterSourceNodeIdsIsSet(true);
      }
      if (incoming.get(47)) {
        struct.nereids_id = iprot.readI32();
        struct.setNereidsIdIsSet(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();
  }
}