[multivalue index place holder]:add index type and multivalue column flag, ob table param add member
This commit is contained in:
		@ -127,6 +127,8 @@ static const uint64_t OB_MIN_ID  = 0;//used for lower_bound
 | 
			
		||||
#define GENERATED_COLUMN_UDF_EXPR (INT64_C(1) << 20)
 | 
			
		||||
#define UNUSED_COLUMN_FLAG (INT64_C(1) << 21) // check if the column is unused.
 | 
			
		||||
#define GENERATED_DOC_ID_COLUMN_FLAG (INT64_C(1) << 22)
 | 
			
		||||
#define MULTIVALUE_INDEX_GENERATED_COLUMN_FLAG (INT64_C(1) << 23) // for multivalue index
 | 
			
		||||
#define MULTIVALUE_INDEX_GENERATED_ARRAY_COLUMN_FLAG (INT64_C(1) << 24) // for multivalue index
 | 
			
		||||
 | 
			
		||||
//the high 32-bit flag isn't stored in __all_column
 | 
			
		||||
#define GENERATED_DEPS_CASCADE_FLAG (INT64_C(1) << 32)
 | 
			
		||||
@ -317,11 +319,15 @@ enum ObIndexType
 | 
			
		||||
  INDEX_TYPE_FTS_DOC_ROWKEY_GLOBAL_LOCAL_STORAGE = 20,
 | 
			
		||||
  INDEX_TYPE_FTS_INDEX_GLOBAL_LOCAL_STORAGE = 21,
 | 
			
		||||
  INDEX_TYPE_FTS_DOC_WORD_GLOBAL_LOCAL_STORAGE = 22,
 | 
			
		||||
 | 
			
		||||
  // new index types for multivalue index
 | 
			
		||||
  INDEX_TYPE_NORMAL_MULTIVALUE_LOCAL = 23,
 | 
			
		||||
  INDEX_TYPE_UNIQUE_MULTIVALUE_LOCAL = 24,
 | 
			
		||||
  /*
 | 
			
		||||
  * Attention!!! when add new index type,
 | 
			
		||||
  * need update func ObSimpleTableSchemaV2::should_not_validate_data_index_ckm()
 | 
			
		||||
  */
 | 
			
		||||
  INDEX_TYPE_MAX = 23,
 | 
			
		||||
  INDEX_TYPE_MAX = 25,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// using type for index
 | 
			
		||||
 | 
			
		||||
@ -42,7 +42,10 @@ ObTableSchemaParam::ObTableSchemaParam(ObIAllocator &allocator)
 | 
			
		||||
    read_param_version_(0),
 | 
			
		||||
    read_info_(),
 | 
			
		||||
    cg_read_infos_(),
 | 
			
		||||
    lob_inrow_threshold_(OB_DEFAULT_LOB_INROW_THRESHOLD)
 | 
			
		||||
    lob_inrow_threshold_(OB_DEFAULT_LOB_INROW_THRESHOLD),
 | 
			
		||||
    multivalue_col_id_(OB_INVALID_ID),
 | 
			
		||||
    multivalue_arr_col_id_(OB_INVALID_ID),
 | 
			
		||||
    data_table_rowkey_column_num_(0)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -71,6 +74,9 @@ void ObTableSchemaParam::reset()
 | 
			
		||||
  cg_read_infos_.reset();
 | 
			
		||||
  read_param_version_ = 0;
 | 
			
		||||
  lob_inrow_threshold_ = OB_DEFAULT_LOB_INROW_THRESHOLD;
 | 
			
		||||
  multivalue_col_id_ = OB_INVALID_ID;
 | 
			
		||||
  multivalue_arr_col_id_ = OB_INVALID_ID;
 | 
			
		||||
  data_table_rowkey_column_num_ =0 ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ObTableSchemaParam::convert(const ObTableSchema *schema)
 | 
			
		||||
@ -446,6 +452,9 @@ OB_DEF_SERIALIZE(ObTableSchemaParam)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  OB_UNIS_ENCODE(multivalue_col_id_);
 | 
			
		||||
  OB_UNIS_ENCODE(multivalue_arr_col_id_);
 | 
			
		||||
  OB_UNIS_ENCODE(data_table_rowkey_column_num_);
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -527,6 +536,10 @@ OB_DEF_DESERIALIZE(ObTableSchemaParam)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  OB_UNIS_DECODE(multivalue_col_id_);
 | 
			
		||||
  OB_UNIS_DECODE(multivalue_arr_col_id_);
 | 
			
		||||
  OB_UNIS_DECODE(data_table_rowkey_column_num_);
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -568,6 +581,10 @@ OB_DEF_SERIALIZE_SIZE(ObTableSchemaParam)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  OB_UNIS_ADD_LEN(multivalue_col_id_);
 | 
			
		||||
  OB_UNIS_ADD_LEN(multivalue_arr_col_id_);
 | 
			
		||||
  OB_UNIS_ADD_LEN(data_table_rowkey_column_num_);
 | 
			
		||||
  return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -114,6 +114,9 @@ private:
 | 
			
		||||
  storage::ObTableReadInfo read_info_;
 | 
			
		||||
  storage::ObFixedMetaObjArray<storage::ObTableReadInfo *> cg_read_infos_;
 | 
			
		||||
  int64_t lob_inrow_threshold_;
 | 
			
		||||
  uint64_t multivalue_col_id_;
 | 
			
		||||
  uint64_t multivalue_arr_col_id_;
 | 
			
		||||
  int64_t data_table_rowkey_column_num_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class ObTableDMLParam
 | 
			
		||||
 | 
			
		||||
@ -625,7 +625,8 @@ ObTableParam::ObTableParam(ObIAllocator &allocator)
 | 
			
		||||
    parser_name_(),
 | 
			
		||||
    enable_lob_locator_v2_(false),
 | 
			
		||||
    is_spatial_index_(false),
 | 
			
		||||
    is_fts_index_(false)
 | 
			
		||||
    is_fts_index_(false),
 | 
			
		||||
    is_multivalue_index_(false)
 | 
			
		||||
{
 | 
			
		||||
  reset();
 | 
			
		||||
}
 | 
			
		||||
@ -653,6 +654,7 @@ void ObTableParam::reset()
 | 
			
		||||
  enable_lob_locator_v2_ = false;
 | 
			
		||||
  is_spatial_index_ = false;
 | 
			
		||||
  is_fts_index_ = false;
 | 
			
		||||
  is_multivalue_index_ = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
OB_DEF_SERIALIZE(ObTableParam)
 | 
			
		||||
@ -688,6 +690,9 @@ OB_DEF_SERIALIZE(ObTableParam)
 | 
			
		||||
  if (OB_SUCC(ret) && is_fts_index_) {
 | 
			
		||||
    OB_UNIS_ENCODE(parser_name_);
 | 
			
		||||
  }
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    OB_UNIS_ENCODE(is_multivalue_index_);
 | 
			
		||||
  }
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -767,6 +772,11 @@ OB_DEF_DESERIALIZE(ObTableParam)
 | 
			
		||||
      LOG_WARN("Fail to ccopy parser name ", K(ret), K_(parser_name), K(tmp_parser_name));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    LST_DO_CODE(OB_UNIS_DECODE,
 | 
			
		||||
                is_multivalue_index_);
 | 
			
		||||
  }
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -802,6 +812,11 @@ OB_DEF_SERIALIZE_SIZE(ObTableParam)
 | 
			
		||||
  if (OB_SUCC(ret) && is_fts_index_) {
 | 
			
		||||
    OB_UNIS_ADD_LEN(parser_name_);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    LST_DO_CODE(OB_UNIS_ADD_LEN,
 | 
			
		||||
              is_multivalue_index_);
 | 
			
		||||
  }
 | 
			
		||||
  return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -397,6 +397,7 @@ private:
 | 
			
		||||
  bool enable_lob_locator_v2_;
 | 
			
		||||
  bool is_spatial_index_;
 | 
			
		||||
  bool is_fts_index_;
 | 
			
		||||
  bool is_multivalue_index_;
 | 
			
		||||
};
 | 
			
		||||
} //namespace schema
 | 
			
		||||
} //namespace share
 | 
			
		||||
 | 
			
		||||
@ -110,7 +110,10 @@ public:
 | 
			
		||||
  enum INDEX_KEYNAME {
 | 
			
		||||
    NORMAL_KEY = 0,
 | 
			
		||||
    UNIQUE_KEY = 1,
 | 
			
		||||
    SPATIAL_KEY = 2
 | 
			
		||||
    SPATIAL_KEY = 2,
 | 
			
		||||
    FTS_KEY = 3,
 | 
			
		||||
    MULTI_KEY = 4,
 | 
			
		||||
    MULTI_UNIQUE_KEY = 5
 | 
			
		||||
  };
 | 
			
		||||
  enum COLUMN_NODE {
 | 
			
		||||
    COLUMN_REF_NODE = 0,
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user