[multivalue index place holder]:add index type and multivalue column flag, ob table param add member

This commit is contained in:
obdev
2024-03-27 10:20:30 +00:00
committed by ob-robot
parent c2e5111ad3
commit 49e502b4a1
6 changed files with 49 additions and 4 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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,