Fix direct load fast heap table cmp funcs

This commit is contained in:
suz-yang
2023-06-27 02:48:01 +00:00
committed by ob-robot
parent 8ac377ec13
commit 89201c0a86
5 changed files with 17 additions and 9 deletions

View File

@ -202,6 +202,7 @@ int ObTableLoadTransStoreWriter::init_session_ctx_array()
param.table_data_desc_ = *table_data_desc_;
param.datum_utils_ = &(trans_ctx_->ctx_->schema_.datum_utils_);
param.col_descs_ = &(trans_ctx_->ctx_->schema_.column_descs_);
param.cmp_funcs_ = &(trans_ctx_->ctx_->schema_.cmp_funcs_);
param.file_mgr_ = trans_ctx_->ctx_->store_ctx_->tmp_file_mgr_;
param.is_multiple_mode_ = trans_ctx_->ctx_->store_ctx_->is_multiple_mode_;
param.is_fast_heap_table_ = trans_ctx_->ctx_->store_ctx_->is_fast_heap_table_;

View File

@ -29,6 +29,7 @@ ObDirectLoadFastHeapTableBuildParam::ObDirectLoadFastHeapTableBuildParam()
: snapshot_version_(0),
datum_utils_(nullptr),
col_descs_(nullptr),
cmp_funcs_(nullptr),
insert_table_ctx_(nullptr),
fast_heap_table_ctx_(nullptr),
dml_row_handler_(nullptr),
@ -43,8 +44,8 @@ ObDirectLoadFastHeapTableBuildParam::~ObDirectLoadFastHeapTableBuildParam()
bool ObDirectLoadFastHeapTableBuildParam::is_valid() const
{
return tablet_id_.is_valid() && snapshot_version_ > 0 && table_data_desc_.is_valid() &&
nullptr != col_descs_ && nullptr != insert_table_ctx_ && nullptr != fast_heap_table_ctx_ &&
nullptr != dml_row_handler_ && nullptr != datum_utils_;
nullptr != col_descs_ && nullptr != cmp_funcs_ && nullptr != insert_table_ctx_ &&
nullptr != fast_heap_table_ctx_ && nullptr != dml_row_handler_ && nullptr != datum_utils_;
}
/**
@ -106,9 +107,8 @@ int ObDirectLoadFastHeapTableBuilder::collect_obj(const ObDatumRow &datum_row)
for (int64_t i = 0; OB_SUCC(ret) && i < param_.table_data_desc_.column_count_; i++) {
const ObStorageDatum &datum =
datum_row.storage_datums_[i + extra_rowkey_cnt + 1];
const common::ObCmpFunc &cmp_func = param_.datum_utils_->get_cmp_funcs().at(
i + extra_rowkey_cnt + 1).get_cmp_func();
const ObColDesc &col_desc = param_.col_descs_->at(i + 1);
const ObCmpFunc &cmp_func = param_.cmp_funcs_->at(i + 1).get_cmp_func();
ObOptOSGColumnStat *col_stat = column_stat_array_.at(i);
bool is_valid = ObColumnStatParam::is_valid_opt_col_type(col_desc.col_type_.get_type());
if (col_stat != nullptr && is_valid) {

View File

@ -32,14 +32,16 @@ public:
ObDirectLoadFastHeapTableBuildParam();
~ObDirectLoadFastHeapTableBuildParam();
bool is_valid() const;
TO_STRING_KV(K_(tablet_id), K_(snapshot_version), K_(table_data_desc), KP_(insert_table_ctx),
KP_(fast_heap_table_ctx), KP_(dml_row_handler), K_(online_opt_stat_gather));
TO_STRING_KV(K_(tablet_id), K_(snapshot_version), K_(table_data_desc), KP_(datum_utils),
KP_(col_descs), KP_(cmp_funcs), KP_(insert_table_ctx), KP_(fast_heap_table_ctx),
KP_(dml_row_handler), K_(online_opt_stat_gather));
public:
common::ObTabletID tablet_id_;
int64_t snapshot_version_;
ObDirectLoadTableDataDesc table_data_desc_;
const blocksstable::ObStorageDatumUtils *datum_utils_;
const common::ObIArray<share::schema::ObColDesc> *col_descs_;
const blocksstable::ObStoreCmpFuncs *cmp_funcs_;
ObDirectLoadInsertTableContext *insert_table_ctx_;
ObDirectLoadFastHeapTableContext *fast_heap_table_ctx_;
ObDirectLoadDMLRowHandler *dml_row_handler_;

View File

@ -27,6 +27,8 @@ using namespace table;
ObDirectLoadTableStoreParam::ObDirectLoadTableStoreParam()
: snapshot_version_(0),
datum_utils_(nullptr),
col_descs_(nullptr),
cmp_funcs_(nullptr),
file_mgr_(nullptr),
is_multiple_mode_(false),
is_fast_heap_table_(false),
@ -45,7 +47,7 @@ ObDirectLoadTableStoreParam::~ObDirectLoadTableStoreParam()
bool ObDirectLoadTableStoreParam::is_valid() const
{
return snapshot_version_ > 0 && table_data_desc_.is_valid() && nullptr != datum_utils_ &&
nullptr != file_mgr_ &&
nullptr != col_descs_ && nullptr != cmp_funcs_ && nullptr != file_mgr_ &&
(!is_fast_heap_table_ ||
(nullptr != insert_table_ctx_ && nullptr != fast_heap_table_ctx_)) &&
nullptr != dml_row_handler_;
@ -103,6 +105,7 @@ int ObDirectLoadTableStoreBucket::init(const ObDirectLoadTableStoreParam &param,
fast_heap_table_build_param.table_data_desc_ = param.table_data_desc_;
fast_heap_table_build_param.datum_utils_ = param.datum_utils_;
fast_heap_table_build_param.col_descs_ = param.col_descs_;
fast_heap_table_build_param.cmp_funcs_ = param.cmp_funcs_;
fast_heap_table_build_param.insert_table_ctx_ = param.insert_table_ctx_;
fast_heap_table_build_param.fast_heap_table_ctx_ = param.fast_heap_table_ctx_;
fast_heap_table_build_param.dml_row_handler_ = param.dml_row_handler_;

View File

@ -28,13 +28,15 @@ public:
~ObDirectLoadTableStoreParam();
bool is_valid() const;
TO_STRING_KV(K_(snapshot_version), K_(table_data_desc), KP_(datum_utils), KP_(col_descs),
KP_(file_mgr), K_(is_multiple_mode), K_(is_fast_heap_table), KP_(insert_table_ctx),
KP_(fast_heap_table_ctx), KP_(dml_row_handler), KP_(extra_buf), K_(extra_buf_size));
KP_(cmp_funcs), KP_(file_mgr), K_(is_multiple_mode), K_(is_fast_heap_table),
KP_(insert_table_ctx), KP_(fast_heap_table_ctx), KP_(dml_row_handler),
KP_(extra_buf), K_(extra_buf_size));
public:
int64_t snapshot_version_;
ObDirectLoadTableDataDesc table_data_desc_;
const blocksstable::ObStorageDatumUtils *datum_utils_;
const common::ObIArray<share::schema::ObColDesc> *col_descs_;
const blocksstable::ObStoreCmpFuncs *cmp_funcs_;
ObDirectLoadTmpFileManager *file_mgr_;
bool is_multiple_mode_;
bool is_fast_heap_table_;