Add scan option in das scan op
This commit is contained in:
@ -25,6 +25,7 @@ namespace common
|
|||||||
OB_SERIALIZE_MEMBER(ObLimitParam, offset_, limit_);
|
OB_SERIALIZE_MEMBER(ObLimitParam, offset_, limit_);
|
||||||
OB_SERIALIZE_MEMBER(SampleInfo, table_id_, method_, scope_, percent_, seed_, force_block_);
|
OB_SERIALIZE_MEMBER(SampleInfo, table_id_, method_, scope_, percent_, seed_, force_block_);
|
||||||
OB_SERIALIZE_MEMBER(ObEstRowCountRecord, table_id_, table_type_, version_range_, logical_row_count_, physical_row_count_);
|
OB_SERIALIZE_MEMBER(ObEstRowCountRecord, table_id_, table_type_, version_range_, logical_row_count_, physical_row_count_);
|
||||||
|
OB_SERIALIZE_MEMBER(ObTableScanOption, io_read_batch_size_, io_read_gap_size_, storage_rowsets_size_);
|
||||||
|
|
||||||
uint64_t SampleInfo::hash(uint64_t seed) const
|
uint64_t SampleInfo::hash(uint64_t seed) const
|
||||||
{
|
{
|
||||||
|
@ -96,6 +96,49 @@ struct SampleInfo
|
|||||||
OB_UNIS_VERSION(1);
|
OB_UNIS_VERSION(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ObTableScanOption
|
||||||
|
{
|
||||||
|
OB_UNIS_VERSION(1);
|
||||||
|
public:
|
||||||
|
static const int64_t MAX_IO_READ_BATCH_SIZE = 16_MB;
|
||||||
|
static const int64_t MAX_STORAGE_ROWSETS_SIZE = (1 << 20);
|
||||||
|
ObTableScanOption() :
|
||||||
|
io_read_batch_size_(0),
|
||||||
|
io_read_gap_size_(0),
|
||||||
|
storage_rowsets_size_(1)
|
||||||
|
{}
|
||||||
|
bool is_io_valid() const
|
||||||
|
{
|
||||||
|
return (io_read_batch_size_ >= 0 && io_read_batch_size_ <= MAX_IO_READ_BATCH_SIZE &&
|
||||||
|
io_read_gap_size_ >= 0 && io_read_gap_size_ < io_read_batch_size_);
|
||||||
|
}
|
||||||
|
bool is_rowsets_valid() const
|
||||||
|
{
|
||||||
|
return storage_rowsets_size_ > 0 && storage_rowsets_size_ <= MAX_STORAGE_ROWSETS_SIZE;
|
||||||
|
}
|
||||||
|
void reset()
|
||||||
|
{
|
||||||
|
io_read_batch_size_ = 0;
|
||||||
|
io_read_gap_size_ = 0;
|
||||||
|
storage_rowsets_size_ = 1;
|
||||||
|
}
|
||||||
|
ObTableScanOption &operator=(const ObTableScanOption &opt)
|
||||||
|
{
|
||||||
|
if (this == &opt) {
|
||||||
|
} else {
|
||||||
|
io_read_batch_size_ = opt.io_read_batch_size_;
|
||||||
|
io_read_gap_size_ = opt.io_read_gap_size_;
|
||||||
|
storage_rowsets_size_ = opt.storage_rowsets_size_;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
TO_STRING_KV(K_(io_read_batch_size), K_(io_read_gap_size), K_(storage_rowsets_size));
|
||||||
|
|
||||||
|
int64_t io_read_batch_size_;
|
||||||
|
int64_t io_read_gap_size_;
|
||||||
|
int64_t storage_rowsets_size_;
|
||||||
|
};
|
||||||
|
|
||||||
struct ObLimitParam
|
struct ObLimitParam
|
||||||
{
|
{
|
||||||
int64_t offset_;
|
int64_t offset_;
|
||||||
|
@ -62,7 +62,8 @@ OB_SERIALIZE_MEMBER(ObDASScanCtDef,
|
|||||||
trans_info_expr_,
|
trans_info_expr_,
|
||||||
group_by_column_ids_,
|
group_by_column_ids_,
|
||||||
ir_scan_type_,
|
ir_scan_type_,
|
||||||
rowkey_exprs_);
|
rowkey_exprs_,
|
||||||
|
table_scan_opt_);
|
||||||
|
|
||||||
OB_DEF_SERIALIZE(ObDASScanRtDef)
|
OB_DEF_SERIALIZE(ObDASScanRtDef)
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,8 @@ public:
|
|||||||
external_file_format_str_(alloc),
|
external_file_format_str_(alloc),
|
||||||
trans_info_expr_(nullptr),
|
trans_info_expr_(nullptr),
|
||||||
ir_scan_type_(ObTSCIRScanType::OB_NOT_A_SPEC_SCAN),
|
ir_scan_type_(ObTSCIRScanType::OB_NOT_A_SPEC_SCAN),
|
||||||
rowkey_exprs_(alloc)
|
rowkey_exprs_(alloc),
|
||||||
|
table_scan_opt_()
|
||||||
{ }
|
{ }
|
||||||
//in das scan op, column described with column expr
|
//in das scan op, column described with column expr
|
||||||
virtual bool has_expr() const override { return true; }
|
virtual bool has_expr() const override { return true; }
|
||||||
@ -83,7 +84,8 @@ public:
|
|||||||
K_(external_file_location),
|
K_(external_file_location),
|
||||||
KPC_(trans_info_expr),
|
KPC_(trans_info_expr),
|
||||||
K_(ir_scan_type),
|
K_(ir_scan_type),
|
||||||
K_(rowkey_exprs));
|
K_(rowkey_exprs),
|
||||||
|
K_(table_scan_opt));
|
||||||
common::ObTableID ref_table_id_;
|
common::ObTableID ref_table_id_;
|
||||||
UIntFixedArray access_column_ids_;
|
UIntFixedArray access_column_ids_;
|
||||||
int64_t schema_version_;
|
int64_t schema_version_;
|
||||||
@ -105,6 +107,7 @@ public:
|
|||||||
ObExpr *trans_info_expr_; // transaction information pseudo-column
|
ObExpr *trans_info_expr_; // transaction information pseudo-column
|
||||||
ObTSCIRScanType ir_scan_type_; // specify retrieval scan type
|
ObTSCIRScanType ir_scan_type_; // specify retrieval scan type
|
||||||
sql::ExprFixedArray rowkey_exprs_; // store rowkey exprs for index lookup
|
sql::ExprFixedArray rowkey_exprs_; // store rowkey exprs for index lookup
|
||||||
|
ObTableScanOption table_scan_opt_;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ObDASScanRtDef : ObDASBaseRtDef
|
struct ObDASScanRtDef : ObDASBaseRtDef
|
||||||
|
Reference in New Issue
Block a user