[FEAT MERGE] Support external table

Co-authored-by: jingtaoye35 <1255153887@qq.com>
This commit is contained in:
wjhh2008
2023-04-29 15:11:49 +00:00
committed by ob-robot
parent ecb74a122c
commit 09ed904b58
164 changed files with 8074 additions and 667 deletions

View File

@ -50,7 +50,12 @@ OB_SERIALIZE_MEMBER(ObDASScanCtDef,
aggregate_column_ids_,
group_id_expr_,
result_output_,
is_get_);
is_get_,
is_external_table_,
external_file_location_,
external_file_access_info_,
external_files_,
external_file_format_str_);
OB_DEF_SERIALIZE(ObDASScanRtDef)
{
@ -218,6 +223,9 @@ int ObDASScanOp::init_scan_param()
scan_param_.frozen_version_ = scan_rtdef_->frozen_version_;
scan_param_.force_refresh_lc_ = scan_rtdef_->force_refresh_lc_;
scan_param_.output_exprs_ = &(scan_ctdef_->pd_expr_spec_.access_exprs_);
scan_param_.ext_file_column_exprs_ = &(scan_ctdef_->pd_expr_spec_.ext_file_column_exprs_);
scan_param_.ext_column_convert_exprs_ = &(scan_ctdef_->pd_expr_spec_.ext_column_convert_exprs_);
scan_param_.calc_exprs_ = &(scan_ctdef_->pd_expr_spec_.calc_exprs_);
scan_param_.aggregate_exprs_ = &(scan_ctdef_->pd_expr_spec_.pd_storage_aggregate_output_);
scan_param_.table_param_ = &(scan_ctdef_->table_param_);
scan_param_.op_ = scan_rtdef_->p_pd_expr_op_;
@ -255,14 +263,29 @@ int ObDASScanOp::init_scan_param()
if (OB_FAIL(scan_param_.column_ids_.assign(scan_ctdef_->access_column_ids_))) {
LOG_WARN("init column ids failed", K(ret));
}
//external table scan params
if (OB_SUCC(ret) && scan_ctdef_->is_external_table_) {
scan_param_.external_file_access_info_ = scan_ctdef_->external_file_access_info_.str_;
scan_param_.external_file_location_ = scan_ctdef_->external_file_location_.str_;
if (OB_FAIL(scan_param_.external_file_format_.load_from_string(scan_ctdef_->external_file_format_str_.str_, *scan_param_.allocator_))) {
LOG_WARN("fail to load from string", K(ret));
} else {
uint64_t max_idx = 0;
for (int i = 0; i < scan_param_.ext_file_column_exprs_->count(); i++) {
max_idx = std::max(max_idx, scan_param_.ext_file_column_exprs_->at(i)->extra_);
}
scan_param_.external_file_format_.csv_format_.file_column_nums_ = static_cast<int64_t>(max_idx);
}
}
LOG_DEBUG("init scan param", K(scan_param_));
return ret;
}
ObITabletScan &ObDASScanOp::get_tsc_service()
{
return is_virtual_table(scan_ctdef_->ref_table_id_) ?
*GCTX.vt_par_ser_ : *(MTL(ObAccessService *));
return is_virtual_table(scan_ctdef_->ref_table_id_) ? *GCTX.vt_par_ser_
: scan_ctdef_->is_external_table_ ? *GCTX.et_access_service_
: *(MTL(ObAccessService *));
}
int ObDASScanOp::open_op()