From 4bf0f91697d2a9d6052bfc144b2bc805efadfcee Mon Sep 17 00:00:00 2001 From: saltonz Date: Tue, 26 Mar 2024 06:46:03 +0000 Subject: [PATCH] placeholder for fulltext parser name in query execution --- src/share/schema/ob_table_param.cpp | 21 ++++++++++++++++++++- src/share/schema/ob_table_param.h | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/share/schema/ob_table_param.cpp b/src/share/schema/ob_table_param.cpp index ba86f9950..32991b9fb 100644 --- a/src/share/schema/ob_table_param.cpp +++ b/src/share/schema/ob_table_param.cpp @@ -622,6 +622,7 @@ ObTableParam::ObTableParam(ObIAllocator &allocator) use_lob_locator_(false), rowid_version_(ObURowIDData::INVALID_ROWID_VERSION), rowid_projector_(allocator), + parser_name_(), enable_lob_locator_v2_(false), is_spatial_index_(false), is_fts_index_(false) @@ -647,6 +648,7 @@ void ObTableParam::reset() use_lob_locator_ = false; rowid_version_ = ObURowIDData::INVALID_ROWID_VERSION; rowid_projector_.reset(); + parser_name_.reset(); main_read_info_.reset(); enable_lob_locator_v2_ = false; is_spatial_index_ = false; @@ -683,6 +685,9 @@ OB_DEF_SERIALIZE(ObTableParam) } } } + if (OB_SUCC(ret) && is_fts_index_) { + OB_UNIS_ENCODE(parser_name_); + } return ret; } @@ -753,6 +758,15 @@ OB_DEF_DESERIALIZE(ObTableParam) } } } + + if (OB_SUCC(ret) && is_fts_index_ && pos < data_len) { + ObString tmp_parser_name; + if (OB_FAIL(tmp_parser_name.deserialize(buf, data_len, pos))) { + LOG_WARN("Fail to deserialize parser name", K(ret)); + } else if (OB_FAIL(ob_write_string(allocator_, tmp_parser_name, parser_name_))) { + LOG_WARN("Fail to ccopy parser name ", K(ret), K_(parser_name), K(tmp_parser_name)); + } + } return ret; } @@ -785,6 +799,9 @@ OB_DEF_SERIALIZE_SIZE(ObTableParam) } } } + if (OB_SUCC(ret) && is_fts_index_) { + OB_UNIS_ADD_LEN(parser_name_); + } return len; } @@ -1480,7 +1497,9 @@ int64_t ObTableParam::to_string(char *buf, const int64_t buf_len) const K_(use_lob_locator), K_(rowid_version), K_(rowid_projector), - K_(enable_lob_locator_v2)); + K_(enable_lob_locator_v2), + K_(is_fts_index), + K_(parser_name)); J_OBJ_END(); return pos; diff --git a/src/share/schema/ob_table_param.h b/src/share/schema/ob_table_param.h index 825a9fbc9..b5d33e9de 100644 --- a/src/share/schema/ob_table_param.h +++ b/src/share/schema/ob_table_param.h @@ -391,6 +391,7 @@ private: bool use_lob_locator_; int64_t rowid_version_; Projector rowid_projector_; + ObString parser_name_; // if min cluster version < 4.1 use lob locator v1, else use lob locator v2. // use enable_lob_locator_v2_ to avoid locator type sudden change while table scan is running bool enable_lob_locator_v2_;