[placeholder] serialization placeholder for domain index scan and text retrieval

This commit is contained in:
saltonz
2024-02-09 16:51:19 +00:00
committed by ob-robot
parent 7947bba1be
commit 646a7d70fe
10 changed files with 462 additions and 10 deletions

View File

@ -127,6 +127,18 @@ OB_DEF_SERIALIZE(ObTableScanCtDef)
OB_UNIS_ENCODE(calc_part_id_expr_);
OB_UNIS_ENCODE(global_index_rowkey_exprs_);
OB_UNIS_ENCODE(flashback_item_.fq_read_tx_uncommitted_);
bool has_aux_lookup = false;
OB_UNIS_ENCODE(has_aux_lookup);
if (OB_SUCC(ret) && has_aux_lookup) {
OB_UNIS_ENCODE(*aux_lookup_ctdef_);
OB_UNIS_ENCODE(*aux_lookup_loc_meta_);
}
bool has_text_ir = false;
OB_UNIS_ENCODE(has_text_ir);
if (OB_SUCC(ret) && has_text_ir) {
OB_UNIS_ENCODE(*text_ir_ctdef_);
}
return ret;
}
@ -154,6 +166,17 @@ OB_DEF_SERIALIZE_SIZE(ObTableScanCtDef)
OB_UNIS_ADD_LEN(calc_part_id_expr_);
OB_UNIS_ADD_LEN(global_index_rowkey_exprs_);
OB_UNIS_ADD_LEN(flashback_item_.fq_read_tx_uncommitted_);
bool has_aux_lookup = false;
OB_UNIS_ADD_LEN(has_aux_lookup);
if (has_aux_lookup) {
OB_UNIS_ADD_LEN(*aux_lookup_ctdef_);
OB_UNIS_ADD_LEN(*aux_lookup_loc_meta_);
}
bool has_text_ir = false;
OB_UNIS_ADD_LEN(has_text_ir);
if (has_text_ir) {
OB_UNIS_ADD_LEN(*text_ir_ctdef_);
}
return len;
}
@ -198,6 +221,30 @@ OB_DEF_DESERIALIZE(ObTableScanCtDef)
OB_UNIS_DECODE(calc_part_id_expr_);
OB_UNIS_DECODE(global_index_rowkey_exprs_);
OB_UNIS_DECODE(flashback_item_.fq_read_tx_uncommitted_);
bool has_aux_lookup = false;
OB_UNIS_DECODE(has_aux_lookup);
if (OB_SUCC(ret) && has_aux_lookup) {
if (OB_ISNULL(aux_lookup_ctdef_ = OB_NEWx(ObDASScanCtDef, &allocator_, allocator_))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_WARN("failed to allocate memory for aux lookup ctdef", K(ret));
} else if (OB_ISNULL(aux_lookup_loc_meta_ = OB_NEWx(ObDASTableLocMeta, &allocator_, allocator_))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_WARN("failed to allocate memory for aux lookup table location meta", K(ret));
} else {
OB_UNIS_DECODE(*aux_lookup_ctdef_);
OB_UNIS_DECODE(*aux_lookup_loc_meta_);
}
}
bool has_text_ir = false;
OB_UNIS_DECODE(has_text_ir);
if (OB_SUCC(ret) && has_text_ir) {
if (OB_ISNULL(text_ir_ctdef_ = OB_NEWx(ObDASIRCtDef, &allocator_, allocator_))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_WARN("failed to allocate memory for text ir ctdef", K(ret));
} else {
OB_UNIS_DECODE(*text_ir_ctdef_);
}
}
return ret;
}

View File

@ -24,6 +24,7 @@
#include "sql/das/ob_das_ref.h"
#include "sql/das/ob_data_access_service.h"
#include "sql/das/ob_das_scan_op.h"
#include "sql/das/ob_text_retrieval_op.h"
#include "sql/engine/basic/ob_pushdown_filter.h"
#include "sql/engine/table/ob_index_lookup_op_impl.h"
namespace oceanbase
@ -139,7 +140,10 @@ public:
das_dppr_tbl_(nullptr),
allocator_(allocator),
calc_part_id_expr_(NULL),
global_index_rowkey_exprs_(allocator)
global_index_rowkey_exprs_(allocator),
aux_lookup_ctdef_(nullptr),
aux_lookup_loc_meta_(nullptr),
text_ir_ctdef_(nullptr)
{ }
const ExprFixedArray &get_das_output_exprs() const
{
@ -161,7 +165,10 @@ public:
KPC_(lookup_loc_meta),
KPC_(das_dppr_tbl),
KPC_(calc_part_id_expr),
K_(global_index_rowkey_exprs));
K_(global_index_rowkey_exprs),
KPC_(aux_lookup_ctdef),
KPC_(aux_lookup_loc_meta),
KPC_(text_ir_ctdef));
//the query range of index scan/table scan
ObQueryRange pre_query_range_;
FlashBackItem flashback_item_;
@ -188,6 +195,11 @@ public:
ObExpr *calc_part_id_expr_;
ExprFixedArray global_index_rowkey_exprs_;
// end for Global Index Lookup
// domain doc_id aux lookup
ObDASScanCtDef *aux_lookup_ctdef_;
ObDASTableLocMeta *aux_lookup_loc_meta_;
// text retrieval
ObDASIRCtDef *text_ir_ctdef_;
};
struct ObTableScanRtDef