merge devleop into master 20231212
This commit is contained in:
parent
b6c37b4cda
commit
39cc0a6d60
6
.github/workflows/compile.yml
vendored
6
.github/workflows/compile.yml
vendored
@ -5,6 +5,12 @@ on:
|
||||
branches: [ master, develop ]
|
||||
pull_request:
|
||||
branches: [ master, develop ]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
- 'README.md'
|
||||
- 'README_CN.md'
|
||||
- 'CONTRIBUTING.md'
|
||||
|
||||
jobs:
|
||||
centos-build:
|
||||
|
6
.github/workflows/farm.yml
vendored
6
.github/workflows/farm.yml
vendored
@ -3,6 +3,12 @@ name: Farm
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ master,develop ]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '.github/**'
|
||||
- 'README.md'
|
||||
- 'README_CN.md'
|
||||
- 'CONTRIBUTING.md'
|
||||
schedule:
|
||||
- cron: '30 9 * * *'
|
||||
|
||||
|
@ -110,7 +110,7 @@ For future plans, see [Roadmap 2023](https://github.com/oceanbase/oceanbase/issu
|
||||
|
||||
# Case study
|
||||
|
||||
OceanBase has been serving more than 400 customers and upgraded their database from different industries, including Financial Services, Telecom, Retail, Internet, and more.
|
||||
OceanBase has been serving more than 1000 customers and upgraded their database from different industries, including Financial Services, Telecom, Retail, Internet, and more.
|
||||
|
||||
See also [success stories](https://en.oceanbase.com/customer/home) and [Who is using OceanBase](https://github.com/oceanbase/oceanbase/issues/1301) for more details.
|
||||
|
||||
|
@ -57,7 +57,7 @@
|
||||
|
||||
- **MySQL 兼容**
|
||||
|
||||
高度兼容 MySQL,覆盖绝大多数常见功能,支持过程语言、触发器等高级特性,提供自动迁移工具,支持迁移评估和反向同步以保障数据迁移安全,可支撑金融、政府、运营商等关键行业核心场景替代。
|
||||
高度兼容 MySQL,覆盖绝大多数常见功能,支持过程语言、触发器等高级特性,提供自动迁移工具,支持迁移评估和反向同步以保障数据迁移安全,可支撑金融、政府、运营商等关键行业核心场景。
|
||||
|
||||
- **低成本**
|
||||
|
||||
@ -109,7 +109,7 @@ obd demo
|
||||
|
||||
# 案例
|
||||
|
||||
OceanBase 已服务超过 400 家来自不同行业的客户,包括金融服务、电信、零售、互联网等。
|
||||
OceanBase 已服务超过 1000 家来自不同行业的客户,包括金融服务、电信、零售、互联网等。
|
||||
|
||||
更详细的信息请参考[客户案例](https://www.oceanbase.com/customer/home)和[谁在使用 OceanBase](https://github.com/oceanbase/oceanbase/issues/1301)。
|
||||
|
||||
|
@ -114,7 +114,7 @@ public:
|
||||
};
|
||||
|
||||
common::ObCurTraceId::TraceId trace_id_;
|
||||
int32_t plan_line_id_; // which SQL operater the session is processing when sampling
|
||||
int32_t plan_line_id_; // which SQL operator the session is processing when sampling
|
||||
char sql_id_[common::OB_MAX_SQL_ID_LENGTH + 1];
|
||||
bool session_type_; // false=0, FOREGROUND, true=1, BACKGROUND
|
||||
bool is_wr_sample_; // true represents this node should be sampled into wr.
|
||||
|
2
deps/oblib/src/lib/hash/ob_hashtable.h
vendored
2
deps/oblib/src/lib/hash/ob_hashtable.h
vendored
@ -1165,7 +1165,7 @@ public:
|
||||
// if callback failed, erase the node
|
||||
// parameters:
|
||||
// flag: 0 shows that not cover existing object.
|
||||
// callback: MUST with a int operater()
|
||||
// callback: MUST with a int operator()
|
||||
// return value:
|
||||
// OB_SUCCESS for success, the node is set
|
||||
// OB_HASH_EXIST for node already exist
|
||||
|
@ -3022,7 +3022,7 @@ private:
|
||||
uint64_t invoker_id_;
|
||||
uint64_t package_id_;
|
||||
uint64_t proc_id_;
|
||||
uint64_t is_object_udf_; // 1: true, why use uint64_t but not bool, for the convinence with llvm cg
|
||||
uint64_t is_object_udf_; // 1: true, why use uint64_t but not bool, for the convenience with llvm cg
|
||||
ObPLSEArray<int64_t> subprogram_path_;
|
||||
ObPLSEArray<InOutParam> params_;
|
||||
ObPLSEArray<int64_t> nocopy_params_;
|
||||
|
@ -828,11 +828,11 @@ int ObDDLOperator::drop_database(const ObDatabaseSchema &db_schema,
|
||||
public_sql_string))) {
|
||||
LOG_WARN("drop audit_schema failed", KPC(audit_schema), K(ret));
|
||||
} else {
|
||||
LOG_INFO("succ to delete audit_schema from drop packege", KPC(audit_schema));
|
||||
LOG_INFO("succ to delete audit_schema from drop package", KPC(audit_schema));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LOG_DEBUG("no need to delete audit_schema from drop packege", K(audits), KPC(package_info));
|
||||
LOG_DEBUG("no need to delete audit_schema from drop package", K(audits), KPC(package_info));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -885,11 +885,11 @@ int ObDDLOperator::drop_database(const ObDatabaseSchema &db_schema,
|
||||
public_sql_string))) {
|
||||
LOG_WARN("drop audit_schema failed", KPC(audit_schema), K(ret));
|
||||
} else {
|
||||
LOG_INFO("succ to delete audit_schema from drop packege", KPC(audit_schema));
|
||||
LOG_INFO("succ to delete audit_schema from drop package", KPC(audit_schema));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LOG_DEBUG("no need to delete audit_schema from drop packege", K(audits), KPC(routine_info));
|
||||
LOG_DEBUG("no need to delete audit_schema from drop package", K(audits), KPC(routine_info));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8704,11 +8704,11 @@ int ObDDLOperator::drop_package(const ObPackageInfo &package_info,
|
||||
public_sql_string))) {
|
||||
LOG_WARN("drop audit_schema failed", KPC(audit_schema), K(ret));
|
||||
} else {
|
||||
LOG_INFO("succ to delete audit_schema from drop packege", KPC(audit_schema));
|
||||
LOG_INFO("succ to delete audit_schema from drop package", KPC(audit_schema));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LOG_DEBUG("no need to delete audit_schema from drop packege", K(audits), K(package_info));
|
||||
LOG_DEBUG("no need to delete audit_schema from drop package", K(audits), K(package_info));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
@ -12179,7 +12179,7 @@ int ObDDLService::alter_table_in_trans(obrpc::ObAlterTableArg &alter_table_arg,
|
||||
ObArray<AlterTableSchema*> inc_table_schemas;
|
||||
ObArray<AlterTableSchema*> del_table_schemas;
|
||||
ObArenaAllocator allocator("ModifyPart");
|
||||
//table partitons
|
||||
//table partitions
|
||||
ObArray<int64_t> new_partition_ids;
|
||||
if (OB_SUCC(ret) && alter_table_arg.is_alter_partitions_) {
|
||||
if (OB_FAIL(check_restore_point_allow(tenant_id, *orig_table_schema))) {
|
||||
@ -14023,7 +14023,7 @@ int ObDDLService::check_alter_partitions(const ObTableSchema &orig_table_schema,
|
||||
} else if (obrpc::ObAlterTableArg::TRUNCATE_PARTITION == alter_part_type) {
|
||||
bool is_truncate = true;
|
||||
if (OB_FAIL(check_alter_drop_partitions(orig_table_schema, alter_table_arg, is_truncate))) {
|
||||
LOG_WARN("failed to check truncate partitons", K(ret), K(orig_table_schema), K(alter_table_arg));
|
||||
LOG_WARN("failed to check truncate partitions", K(ret), K(orig_table_schema), K(alter_table_arg));
|
||||
}
|
||||
is_drop_or_truncate = true;
|
||||
} else if (obrpc::ObAlterTableArg::TRUNCATE_SUB_PARTITION == alter_part_type) {
|
||||
@ -25018,7 +25018,7 @@ int ObDDLService::create_tenant_sys_ls(
|
||||
LOG_WARN("fail to wait election leader", KR(ret), K(tenant_id), K(SYS_LS), K(timeout));
|
||||
}
|
||||
int64_t wait_leader_end = ObTimeUtility::current_time();
|
||||
wait_leader = wait_leader_end - wait_leader_end;
|
||||
wait_leader = wait_leader_end - wait_leader_start;
|
||||
}
|
||||
}
|
||||
if (is_meta_tenant(tenant_id)) {
|
||||
|
@ -91,7 +91,7 @@ public:
|
||||
* if task is already cleared, return OB_SUCCESS and related info recorded in history
|
||||
*
|
||||
* @param[in] task_id: transfer task id
|
||||
* @param[out] all_part_list: all partitons of the transfer task
|
||||
* @param[out] all_part_list: all partitions of the transfer task
|
||||
* @param[out] finished_part_list: successfully transferred partitions + needless transferred (not exist or not in src LS) partitions
|
||||
* @return
|
||||
* - OB_SUCCESS: clear task successfully
|
||||
|
@ -58,7 +58,7 @@ int ObAllBackupScheduleTaskStat::inner_get_next_row(ObNewRow *&row)
|
||||
return ret;
|
||||
};
|
||||
if (OB_FAIL(omt_->operate_in_each_tenant(func_iterate_tenant_task_scheduler))) {
|
||||
LOG_WARN("fail to operater in each tenant", K(ret));
|
||||
LOG_WARN("fail to operate in each tenant", K(ret));
|
||||
} else {
|
||||
scanner_it_ = scanner_.begin();
|
||||
start_to_read_ = true;
|
||||
|
@ -580,7 +580,7 @@ int AlterTableSchema::add_alter_column(const AlterColumnSchema &alter_column_sch
|
||||
return ret;
|
||||
}
|
||||
|
||||
int AlterTableSchema::assign_subpartiton_key_info(const common::ObPartitionKeyInfo& src_info)
|
||||
int AlterTableSchema::assign_subpartition_key_info(const common::ObPartitionKeyInfo& src_info)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
|
@ -600,7 +600,7 @@ public:
|
||||
}
|
||||
inline const common::ObString &get_new_part_name() const { return new_part_name_; }
|
||||
inline int set_new_part_name(const common::ObString &new_part_name);
|
||||
int assign_subpartiton_key_info(const common::ObPartitionKeyInfo& src_info);
|
||||
int assign_subpartition_key_info(const common::ObPartitionKeyInfo& src_info);
|
||||
|
||||
int add_alter_column(const AlterColumnSchema &column, const bool need_allocate);
|
||||
void reset();
|
||||
|
@ -2691,7 +2691,7 @@ int ObTableSchema::add_partition_key(const common::ObString &column_name)
|
||||
ret = OB_ERR_BAD_FIELD_ERROR;
|
||||
LOG_WARN("fail to get column schema, return NULL", K(column_name), K(ret));
|
||||
} else if (column->is_part_key_column()) {
|
||||
LOG_INFO("already partiton key", K(column_name), K(ret));
|
||||
LOG_INFO("already partition key", K(column_name), K(ret));
|
||||
} else if (FALSE_IT(construct_partition_key_column(*column, partition_key_column))) {
|
||||
} else if (OB_FAIL(column->set_part_key_pos(partition_key_info_.get_size() + 1))) {
|
||||
LOG_WARN("Failed to set partition key position", K(ret));
|
||||
@ -2713,7 +2713,7 @@ int ObTableSchema::add_subpartition_key(const common::ObString &column_name)
|
||||
ret = OB_ERR_BAD_FIELD_ERROR;
|
||||
LOG_WARN("fail to get column schema, return NULL", K(column_name), K(ret));
|
||||
} else if (column->is_subpart_key_column()) {
|
||||
LOG_INFO("already partiton key", K(column_name), K(ret));
|
||||
LOG_INFO("already partition key", K(column_name), K(ret));
|
||||
} else if (FALSE_IT(construct_partition_key_column(*column, partition_key_column))) {
|
||||
} else if (OB_FAIL(column->set_subpart_key_pos(subpartition_key_info_.get_size() + 1))) {
|
||||
LOG_WARN("Failed to set partition key position", K(ret));
|
||||
@ -7227,7 +7227,7 @@ int ObTableSchema::check_primary_key_cover_partition_column()
|
||||
} else if (OB_FAIL(check_rowkey_cover_partition_keys(partition_key_info_))) {
|
||||
LOG_WARN("Check rowkey cover partition key failed", K(ret));
|
||||
} else if (OB_FAIL(check_rowkey_cover_partition_keys(subpartition_key_info_))) {
|
||||
LOG_WARN("Check rowkey cover subpartiton key failed", K(ret));
|
||||
LOG_WARN("Check rowkey cover subpartition key failed", K(ret));
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -7451,7 +7451,7 @@ int ObTableSchema::get_subpart_ids(
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < subpart_num; i++) {
|
||||
if (OB_ISNULL(subpart_array[i])) {
|
||||
ret = OB_SCHEMA_ERROR;
|
||||
LOG_WARN("get invalid partiton array", K(ret), K(i), K(subpart_num));
|
||||
LOG_WARN("get invalid partition array", K(ret), K(i), K(subpart_num));
|
||||
} else if (OB_FAIL(subpart_ids.push_back(subpart_array[i]->get_sub_part_id()))) {
|
||||
LOG_WARN("push back failed", K(ret));
|
||||
}
|
||||
|
@ -2815,7 +2815,7 @@ int ObDmlCgService::generate_fk_check_ctdef(const ObLogDelUpd &op,
|
||||
ObSEArray<ObRawExpr *, 4> constraint_dep_exprs;
|
||||
ObSEArray<ObRawExpr *, 4> constraint_raw_exprs;
|
||||
if (OB_ISNULL(part_id_expr_for_lookup = fk_part_id_expr)) {
|
||||
// check if table to perform das task is partiton table
|
||||
// check if table to perform das task is partition table
|
||||
} else if (OB_FAIL(cg_.generate_calc_part_id_expr(*part_id_expr_for_lookup, nullptr, rt_part_id_expr))) {
|
||||
LOG_WARN("generate rt part_id_expr failed", K(ret), KPC(part_id_expr_for_lookup));
|
||||
} else if (OB_ISNULL(rt_part_id_expr)) {
|
||||
|
@ -2045,7 +2045,7 @@ int ObHashJoinOp::asyn_dump_partition(
|
||||
LOG_TRACE("debug dump partition", K(is_left), K(start_dumped_part_idx),
|
||||
K(last_dumped_partition_idx), K(cur_dumped_partition_),
|
||||
K(pre_total_dumped_size), K(dumped_size), K(dump_all), K(lbt()));
|
||||
// secondly dump one buffer per partiton one by one
|
||||
// secondly dump one buffer per partition one by one
|
||||
bool finish_dump = false;
|
||||
while (OB_SUCC(ret) && !finish_dump) {
|
||||
finish_dump = true;
|
||||
@ -3991,7 +3991,7 @@ int ObHashJoinOp::insert_batch_row(const int64_t cur_partition_in_memory)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
bool need_material = true;
|
||||
bool dumped_partiton = false;
|
||||
bool dumped_partition = false;
|
||||
ObHashJoinStoredJoinRow *stored_row = nullptr;
|
||||
const int64_t part_idx = get_part_idx(cur_right_hash_value_);
|
||||
if (part_idx < cur_partition_in_memory) {
|
||||
@ -4003,14 +4003,14 @@ int ObHashJoinOp::insert_batch_row(const int64_t cur_partition_in_memory)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
dumped_partiton = true;
|
||||
dumped_partition = true;
|
||||
}
|
||||
if (!need_material) {
|
||||
} else if (nullptr != right_read_row_) {
|
||||
if (OB_FAIL(right_hj_part_array_[part_idx].add_row(right_read_row_, stored_row))) {
|
||||
LOG_WARN("fail to add row", K(ret));
|
||||
} else {
|
||||
if (!dumped_partiton && right_hj_part_array_[part_idx].has_switch_block()) {
|
||||
if (!dumped_partition && right_hj_part_array_[part_idx].has_switch_block()) {
|
||||
cur_full_right_partition_ = part_idx;
|
||||
cur_left_hist_ = &part_histograms_[cur_full_right_partition_];
|
||||
}
|
||||
@ -4021,7 +4021,7 @@ int ObHashJoinOp::insert_batch_row(const int64_t cur_partition_in_memory)
|
||||
LOG_WARN("fail to add row", K(ret));
|
||||
} else {
|
||||
stored_row->set_hash_value(cur_right_hash_value_);
|
||||
if (!dumped_partiton && right_hj_part_array_[part_idx].has_switch_block()) {
|
||||
if (!dumped_partition && right_hj_part_array_[part_idx].has_switch_block()) {
|
||||
cur_full_right_partition_ = part_idx;
|
||||
cur_left_hist_ = &part_histograms_[cur_full_right_partition_];
|
||||
// need right to probe, it may return left and right data, so it need save temporarily
|
||||
@ -4163,7 +4163,7 @@ int ObHashJoinOp::get_next_batch_right_rows()
|
||||
has_fill_left_row_ = false;
|
||||
if (OB_ITER_END == ret) {
|
||||
ret = OB_SUCCESS;
|
||||
// probe left all right rows from 0 partition to last partiton
|
||||
// probe left all right rows from 0 partition to last partition
|
||||
cur_full_right_partition_ = -1;
|
||||
LOG_DEBUG("debug partition start", K(cur_full_right_partition_));
|
||||
if (!enable_batch_) {
|
||||
|
@ -90,7 +90,7 @@ int ObRecursiveUnionAllOp::inner_open()
|
||||
} else if (OB_ISNULL(op_kit = ctx_.get_operator_kit(MY_SPEC.pump_operator_id_))
|
||||
|| OB_ISNULL(op_kit->op_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get ObOperater from exec ctx failed", K(MY_SPEC.pump_operator_id_), K(op_kit), K(MY_SPEC.search_expr_), K(MY_SPEC.strategy_));
|
||||
LOG_WARN("get ObOperator from exec ctx failed", K(MY_SPEC.pump_operator_id_), K(op_kit), K(MY_SPEC.search_expr_), K(MY_SPEC.strategy_));
|
||||
} else {
|
||||
inner_data_.set_left_child(left_);
|
||||
inner_data_.set_right_child(right_);
|
||||
|
@ -2385,7 +2385,7 @@ int ObSPIService::spi_resolve_prepare(common::ObIAllocator &allocator,
|
||||
LOG_WARN("push_back error", K(ret));
|
||||
}
|
||||
}
|
||||
// add debug info, for convinence of sql reconstruct debug
|
||||
// add debug info, for convenience of sql reconstruct debug
|
||||
LOG_DEBUG("spi prepare, source sql and prepared reconstruct sql", K(sql),
|
||||
K(pl_prepare_result.result_set_->get_route_sql()));
|
||||
if (OB_SUCC(ret)) {
|
||||
|
@ -365,7 +365,7 @@ int ObDelUpdLogPlan::calculate_table_location_and_sharding(const ObDelUpdStmt &s
|
||||
table_partition_info = new(table_partition_info) ObTablePartitionInfo(allocator_);
|
||||
ObTableLocationType location_type = OB_TBL_LOCATION_UNINITIALIZED;
|
||||
ObAddr &server = get_optimizer_context().get_local_server_addr();
|
||||
table_partition_info->get_table_location().set_check_no_partiton(stmt.is_merge_stmt());
|
||||
table_partition_info->get_table_location().set_check_no_partition(stmt.is_merge_stmt());
|
||||
if (OB_FAIL(calculate_table_location(stmt,
|
||||
filters,
|
||||
table_id,
|
||||
|
@ -554,7 +554,7 @@ int ObLogDelUpd::find_pdml_part_id_producer(ObLogicalOperator *op,
|
||||
} else {
|
||||
if (OB_SUCC(ret) && NULL == producer && op->get_type() == log_op_def::LOG_EXCHANGE
|
||||
&& static_cast<ObLogExchange*>(op)->is_producer()) {
|
||||
// find the first exchange below dml, use this exchange generate partiton id for pdml insert
|
||||
// find the first exchange below dml, use this exchange generate partition id for pdml insert
|
||||
producer = static_cast<ObLogExchange*>(op);
|
||||
}
|
||||
for (int64_t i = 0; OB_SUCC(ret) && NULL == src_tsc && i < op->get_num_of_child(); i++) {
|
||||
@ -564,7 +564,7 @@ int ObLogDelUpd::find_pdml_part_id_producer(ObLogicalOperator *op,
|
||||
}
|
||||
if (OB_SUCC(ret) && NULL != src_tsc && op->get_type() == log_op_def::LOG_EXCHANGE
|
||||
&& static_cast<ObLogExchange*>(op)->is_producer()) {
|
||||
// generate partiton id by exchange above dml target table scan
|
||||
// generate partition id by exchange above dml target table scan
|
||||
producer = static_cast<ObLogExchange*>(op);
|
||||
}
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ protected: // memeber variables
|
||||
// // removal these in cg layer, up to opt layer.
|
||||
common::ObSEArray<uint64_t, 4, common::ModulePageAllocator, true> ddl_output_column_ids_;
|
||||
// removal these in cg layer, up to opt layer end.
|
||||
// table partiton locations
|
||||
// table partition locations
|
||||
ObTablePartitionInfo *table_partition_info_; //this member is not in copy_without_child,
|
||||
//because its used in EXCHANGE stage, and
|
||||
//copy_without_child used before this
|
||||
|
@ -725,7 +725,7 @@ int ObTableLocation::assign(const ObTableLocation &other)
|
||||
is_non_partition_optimized_ = other.is_non_partition_optimized_;
|
||||
tablet_id_ = other.tablet_id_;
|
||||
object_id_ = other.object_id_;
|
||||
check_no_partiton_ = other.check_no_partiton_;
|
||||
check_no_partition_ = other.check_no_partition_;
|
||||
if (OB_FAIL(loc_meta_.assign(other.loc_meta_))) {
|
||||
LOG_WARN("assign loc meta failed", K(ret), K(other.loc_meta_));
|
||||
}
|
||||
@ -855,7 +855,7 @@ void ObTableLocation::reset()
|
||||
is_non_partition_optimized_ = false;
|
||||
tablet_id_.reset();
|
||||
object_id_ = OB_INVALID_ID;
|
||||
check_no_partiton_ = false;
|
||||
check_no_partition_ = false;
|
||||
}
|
||||
int ObTableLocation::init(share::schema::ObSchemaGetterGuard &schema_guard,
|
||||
const ObDMLStmt &stmt,
|
||||
@ -1706,7 +1706,7 @@ int ObTableLocation::calculate_tablet_ids(ObExecContext &exec_ctx,
|
||||
&& 0 == partition_ids.count()
|
||||
&& (stmt::T_INSERT == stmt_type_
|
||||
|| stmt::T_REPLACE == stmt_type_
|
||||
|| check_no_partiton_)) {
|
||||
|| check_no_partition_)) {
|
||||
ret = OB_NO_PARTITION_FOR_GIVEN_VALUE;
|
||||
LOG_USER_WARN(OB_NO_PARTITION_FOR_GIVEN_VALUE);
|
||||
}
|
||||
@ -2891,7 +2891,7 @@ int ObTableLocation::add_partition_columns(const ObDMLStmt &stmt,
|
||||
LOG_WARN("Column id should not be OB_INVALID_ID", K(ret));
|
||||
} else if (only_gen_cols) {//only deal dependented columns for generated partition column
|
||||
if (OB_FAIL(add_partition_column(stmt, table_id, column_id, gen_cols, gen_row_desc))) {
|
||||
LOG_WARN("Failed to add partiton column", K(ret));
|
||||
LOG_WARN("Failed to add partition column", K(ret));
|
||||
}
|
||||
} else {
|
||||
if (col_expr->is_generated_column()) {
|
||||
@ -2918,7 +2918,7 @@ int ObTableLocation::add_partition_columns(const ObDMLStmt &stmt,
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_FAIL(add_partition_column(stmt, table_id, column_id,
|
||||
partition_columns, row_desc))) {
|
||||
LOG_WARN("Failed to add partiton column", K(ret));
|
||||
LOG_WARN("Failed to add partition column", K(ret));
|
||||
}
|
||||
}
|
||||
}//end of else
|
||||
@ -3971,7 +3971,7 @@ int ObTableLocation::calc_partition_id_by_row(ObExecContext &exec_ctx,
|
||||
if (OB_FAIL(ret) || range_columns) {
|
||||
} else if (OB_FAIL(calc_partition_id_by_func_value(tablet_mapper, func_result, false,
|
||||
tablet_ids, partition_ids, part_ids))) {
|
||||
LOG_WARN("Failed to calc partiton id by func value", K(ret));
|
||||
LOG_WARN("Failed to calc partition id by func value", K(ret));
|
||||
}
|
||||
if (0 == partition_ids.count() && PARTITION_LEVEL_ONE == calc_range_part_level) {
|
||||
bool is_interval = false;
|
||||
@ -4751,7 +4751,7 @@ OB_DEF_SERIALIZE(ObTableLocation)
|
||||
OB_UNIS_ENCODE(object_id_);
|
||||
OB_UNIS_ENCODE(related_list_);
|
||||
OB_UNIS_ENCODE(table_type_);
|
||||
OB_UNIS_ENCODE(check_no_partiton_);
|
||||
OB_UNIS_ENCODE(check_no_partition_);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -4829,7 +4829,7 @@ OB_DEF_SERIALIZE_SIZE(ObTableLocation)
|
||||
OB_UNIS_ADD_LEN(object_id_);
|
||||
OB_UNIS_ADD_LEN(related_list_);
|
||||
OB_UNIS_ADD_LEN(table_type_);
|
||||
OB_UNIS_ADD_LEN(check_no_partiton_);
|
||||
OB_UNIS_ADD_LEN(check_no_partition_);
|
||||
return len;
|
||||
}
|
||||
|
||||
@ -4985,7 +4985,7 @@ OB_DEF_DESERIALIZE(ObTableLocation)
|
||||
OB_UNIS_DECODE(object_id_);
|
||||
OB_UNIS_DECODE(related_list_);
|
||||
OB_UNIS_DECODE(table_type_);
|
||||
OB_UNIS_DECODE(check_no_partiton_);
|
||||
OB_UNIS_DECODE(check_no_partition_);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -498,7 +498,7 @@ public:
|
||||
tablet_id_(ObTabletID::INVALID_TABLET_ID),
|
||||
object_id_(OB_INVALID_ID),
|
||||
related_list_(allocator_),
|
||||
check_no_partiton_(false)
|
||||
check_no_partition_(false)
|
||||
{
|
||||
}
|
||||
|
||||
@ -547,7 +547,7 @@ public:
|
||||
tablet_id_(ObTabletID::INVALID_TABLET_ID),
|
||||
object_id_(OB_INVALID_ID),
|
||||
related_list_(allocator_),
|
||||
check_no_partiton_(false)
|
||||
check_no_partition_(false)
|
||||
{
|
||||
}
|
||||
virtual ~ObTableLocation() { reset(); }
|
||||
@ -770,9 +770,9 @@ public:
|
||||
const bool is_dml_table = true);
|
||||
|
||||
int calc_not_partitioned_table_ids(ObExecContext &exec_ctx);
|
||||
void set_check_no_partiton(const bool check)
|
||||
void set_check_no_partition(const bool check)
|
||||
{
|
||||
check_no_partiton_ = check;
|
||||
check_no_partition_ = check;
|
||||
}
|
||||
TO_STRING_KV(K_(loc_meta),
|
||||
K_(part_projector),
|
||||
@ -918,7 +918,7 @@ private:
|
||||
ObRawExpr *col_expr,
|
||||
bool &can_replace);
|
||||
//add partition column
|
||||
//add column to row desc and partiton columns
|
||||
//add column to row desc and partition columns
|
||||
int add_partition_column(const ObDMLStmt &stmt,
|
||||
const uint64_t table_id,
|
||||
const uint64_t column_id,
|
||||
@ -1170,7 +1170,7 @@ private:
|
||||
ObTabletID tablet_id_;
|
||||
ObObjectID object_id_;
|
||||
common::ObList<DASRelatedTabletMap::MapEntry, common::ObIAllocator> related_list_;
|
||||
bool check_no_partiton_;
|
||||
bool check_no_partition_;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1789,7 +1789,7 @@ int ObAlterTableResolver::resolve_add_partition(const ParseNode &node,
|
||||
alter_table_schema.get_sub_part_option() = orig_table_schema.get_sub_part_option();
|
||||
alter_table_schema.get_part_option() = orig_table_schema.get_part_option();
|
||||
/* set subpartition key info */
|
||||
OZ (alter_table_schema.assign_subpartiton_key_info(
|
||||
OZ (alter_table_schema.assign_subpartition_key_info(
|
||||
orig_table_schema.get_subpartition_key_info()));
|
||||
OZ (mock_part_func_node(orig_table_schema, true/*is_sub_part*/, subpart_func_node));
|
||||
OZ (resolve_part_func(params_, subpart_func_node,
|
||||
|
@ -10411,7 +10411,7 @@ int ObDDLResolver::resolve_list_partition_elements(ObPartitionedStmt *stmt,
|
||||
} else if (OB_FAIL(resolve_list_partition_value_node(*expr_list_node, partition_name,
|
||||
part_type, part_func_exprs,
|
||||
list_value_exprs, in_tablegroup))) {
|
||||
LOG_WARN("failed to resolve list partiton value node", K(ret));
|
||||
LOG_WARN("failed to resolve list partition value node", K(ret));
|
||||
} else if (OB_NOT_NULL(element_node->children_[PART_ID_NODE])) {
|
||||
// PART_ID is deprecated in 4.0, we just ignore and show warnings here.
|
||||
LOG_USER_WARN_ONCE(OB_NOT_SUPPORTED, "specify part_id");
|
||||
@ -10491,7 +10491,7 @@ int ObDDLResolver::resolve_list_subpartition_elements(ObPartitionedStmt *stmt,
|
||||
} else if (OB_FAIL(resolve_list_partition_value_node(*expr_list_node, partition_name,
|
||||
part_type, part_func_exprs,
|
||||
list_value_exprs, in_tablegroup))) {
|
||||
LOG_WARN("failed to resolve list partiton value node", K(ret));
|
||||
LOG_WARN("failed to resolve list partition value node", K(ret));
|
||||
} else if (OB_NOT_NULL(element_node->children_[PART_ID_NODE])) {
|
||||
// PART_ID is deprecated in 4.0, we just ignore and show warnings here.
|
||||
LOG_USER_WARN_ONCE(OB_NOT_SUPPORTED, "specify part_id");
|
||||
|
@ -3789,7 +3789,7 @@ int ObResolverUtils::check_expr_valid_for_partition(ObRawExpr &expr,
|
||||
part_expr = &expr;
|
||||
}
|
||||
} else if (is_range_part(part_type) || is_list_part(part_type) || is_key_part(part_type)) {
|
||||
//对于partiton by range(xx) 这里的expr是xx
|
||||
//对于partition by range(xx) 这里的expr是xx
|
||||
part_expr = &expr;
|
||||
} else {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
@ -4327,7 +4327,7 @@ int ObResolverUtils::resolve_partition_expr(ObResolverParams ¶ms,
|
||||
ret = OB_ERR_PARTITION_FUNCTION_IS_NOT_ALLOWED;
|
||||
|
||||
} else if (columns.size() <= 0) {
|
||||
//处理partiton中为常量表达式的情况 partition by hash(1+1+1) /partition by range (1+1+1)
|
||||
//处理partition中为常量表达式的情况 partition by hash(1+1+1) /partition by range (1+1+1)
|
||||
//用于限制 partition by hash(1)
|
||||
ret = OB_ERR_WRONG_EXPR_IN_PARTITION_FUNC_ERROR;
|
||||
LOG_WARN("const expr is invalid for thie type of partitioning", K(ret));
|
||||
|
@ -243,7 +243,7 @@ private:
|
||||
* @brief trans_table_item
|
||||
* 将关联target_table的结构改写为关联source_table
|
||||
* 从from item中删除target table
|
||||
* 从partiton信息中删除target table
|
||||
* 从partition信息中删除target table
|
||||
* 重构 rel_idx
|
||||
* @param stmt
|
||||
* @param source_table
|
||||
@ -593,7 +593,7 @@ private:
|
||||
* @brief trans_semi_table_item
|
||||
* 将关联target_table的结构改写为关联source_table
|
||||
* 从table items中删除target table
|
||||
* 从partiton信息中删除target table
|
||||
* 从partition信息中删除target table
|
||||
* 重构 rel_idx
|
||||
* @param stmt
|
||||
* @param source_table
|
||||
|
@ -180,7 +180,7 @@ private:
|
||||
int write_meta_index_list_(const common::ObIArray<ObBackupMetaIndex> &index_list);
|
||||
template <class IndexType>
|
||||
int write_index_list_(const ObBackupBlockType &index_type, const common::ObIArray<IndexType> &index_list);
|
||||
int build_common_header_(const ObBackupBlockType &block_type, const int64_t data_length, const int64_t align_lenght,
|
||||
int build_common_header_(const ObBackupBlockType &block_type, const int64_t data_length, const int64_t align_length,
|
||||
share::ObBackupCommonHeader *&common_header);
|
||||
int write_data_align_(
|
||||
const blocksstable::ObBufferReader &buffer, const ObBackupBlockType &block_type, const int64_t alignment);
|
||||
|
@ -376,7 +376,7 @@ public:
|
||||
private:
|
||||
int prepare_iter(const ObSqlString &sql_string, common::ObCommonSqlProxy *sql_proxy);
|
||||
int generate_build_select_sql(ObSqlString &sql_string);
|
||||
// to fetch partiton/subpartition name for select sql.
|
||||
// to fetch partition/subpartition name for select sql.
|
||||
int fetch_source_part_info(
|
||||
const common::ObTabletID &src_tablet_id,
|
||||
const share::schema::ObTableSchema &src_table_schema,
|
||||
|
@ -131,7 +131,7 @@ int ObDDLHeartBeatTaskContainer::send_task_status_to_rs()
|
||||
if (OB_FAIL(all_reg_task_guard.get_ret())) {
|
||||
if (OB_EAGAIN == ret) {
|
||||
cnt++;
|
||||
LOG_INFO("all reg task guard failed, plase try again, retry count: ", K(cnt));
|
||||
LOG_INFO("all reg task guard failed, please try again, retry count: ", K(cnt));
|
||||
ret = OB_SUCCESS;
|
||||
sleep(RETRY_TIME_INTERVAL);
|
||||
}
|
||||
|
@ -1168,7 +1168,7 @@ int Iterator<BtreeKey, BtreeVal>::iter_next_batch_level_node(int64_t &element_co
|
||||
is_iter_end_ = true;
|
||||
}
|
||||
} else if (cmp == 0) {
|
||||
// the last leaf, all the values in this leaf are satified
|
||||
// the last leaf, all the values in this leaf are satisfied
|
||||
is_iter_end_ = true;
|
||||
}
|
||||
}
|
||||
|
@ -266,7 +266,7 @@ public: // NOTE: those field should only be accessed by txn relative routine
|
||||
transaction::ObTxSEQ tx_scn_; // the change's number of this modify
|
||||
concurrent_control::ObWriteFlag write_flag_; // the write flag of the write process
|
||||
|
||||
// this was used for runtime mertic
|
||||
// this was used for runtime metric
|
||||
int64_t handle_start_time_;
|
||||
|
||||
bool is_standby_read_;
|
||||
|
@ -260,7 +260,7 @@ public:
|
||||
* accomplish with transaction ctx's state
|
||||
* so, must acquire transaction ctx at first
|
||||
*
|
||||
* for detail of authorization see transaction ctx's wirte_auth.
|
||||
* for detail of authorization see transaction ctx's write_auth.
|
||||
*/
|
||||
int write_auth(storage::ObStoreCtx &store_ctx);
|
||||
private:
|
||||
|
@ -684,7 +684,7 @@ int ObMvccRow::elr(const ObTransID &tx_id,
|
||||
} else if (SCN::max_scn() != iter->trans_version_ && iter->trans_version_ > elr_commit_version) {
|
||||
// leader revoke
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
TRANS_LOG(ERROR, "unexected transaction version", K(*iter), K(elr_commit_version));
|
||||
TRANS_LOG(ERROR, "unexpected transaction version", K(*iter), K(elr_commit_version));
|
||||
} else {
|
||||
iter->trans_version_ = elr_commit_version;
|
||||
iter->set_elr();
|
||||
|
@ -360,7 +360,7 @@ struct ObMvccRow
|
||||
bool is_valid_replay_queue_index(const int64_t index) const;
|
||||
|
||||
// ======================== ObMvccRow Row Metas ========================
|
||||
// first dml and last dml is the importatnt statistics for row estimation
|
||||
// first dml and last dml is the important statistics for row estimation
|
||||
void update_dml_flag_(blocksstable::ObDmlFlag flag, uint32_t modify_count);
|
||||
blocksstable::ObDmlFlag get_first_dml_flag() const { return first_dml_flag_; }
|
||||
|
||||
|
@ -67,7 +67,7 @@ public:
|
||||
char buf_[0];
|
||||
};
|
||||
|
||||
// only used for more conveniently passsing parameters
|
||||
// only used for more conveniently passing parameters
|
||||
class ObMemtableData
|
||||
{
|
||||
public:
|
||||
|
@ -1215,7 +1215,7 @@ int ObExternalSortRound<T, Compare>::do_merge(
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_FAIL(next_round.finish_write())) {
|
||||
STORAGE_LOG(WARN, "fail to finsh next round", K(ret));
|
||||
STORAGE_LOG(WARN, "fail to finish next round", K(ret));
|
||||
}
|
||||
}
|
||||
STORAGE_LOG(INFO, "external sort do merge end");
|
||||
|
@ -55,7 +55,7 @@ OB_INLINE bool ObStoreRowComparer::operator()(const ObStoreRow *left, const ObSt
|
||||
|| OB_UNLIKELY(NULL == right)
|
||||
|| OB_UNLIKELY(0 == sort_column_index_.count())) {
|
||||
result_code_ = common::OB_INVALID_ARGUMENT;
|
||||
STORAGE_LOG_RET(WARN, common::OB_INVALID_ARGUMENT, "Invaid argument, ", KP(left), KP(right),
|
||||
STORAGE_LOG_RET(WARN, common::OB_INVALID_ARGUMENT, "Invalid argument, ", KP(left), KP(right),
|
||||
K(sort_column_index_.count()), K_(result_code));
|
||||
} else {
|
||||
for (int64_t i = 0; OB_LIKELY(common::OB_SUCCESS == result_code_) && i < sort_column_index_.count(); ++i) {
|
||||
|
@ -139,7 +139,7 @@ int ObTabletAutoincSeqRpcHandler::fetch_tablet_autoinc_seq_cache(
|
||||
LOG_WARN("get palf role failed", K(ret));
|
||||
} else if (!is_strong_leader(role)) {
|
||||
ret = OB_NOT_MASTER;
|
||||
LOG_WARN("follwer received FetchTabletsSeq rpc", K(ret), K(ls_id));
|
||||
LOG_WARN("follower received FetchTabletsSeq rpc", K(ret), K(ls_id));
|
||||
} else if (OB_FAIL(MTL(ObLSService*)->get_ls(ls_id, ls_handle, ObLSGetMod::OBSERVER_MOD))) {
|
||||
LOG_WARN("get ls failed", K(ret), K(ls_id));
|
||||
} else if (OB_FAIL(ls_handle.get_ls()->get_tablet(tablet_id, tablet_handle))) {
|
||||
@ -177,7 +177,7 @@ int ObTabletAutoincSeqRpcHandler::batch_get_tablet_autoinc_seq(
|
||||
LOG_WARN("get palf role failed", K(ret));
|
||||
} else if (!is_strong_leader(role)) {
|
||||
ret = OB_NOT_MASTER;
|
||||
LOG_WARN("follwer received FetchTabletsSeq rpc", K(ret), K(ls_id));
|
||||
LOG_WARN("follower received FetchTabletsSeq rpc", K(ret), K(ls_id));
|
||||
} else if (OB_FAIL(MTL(ObLSService*)->get_ls(ls_id, ls_handle, ObLSGetMod::OBSERVER_MOD))) {
|
||||
LOG_WARN("get ls failed", K(ret), K(ls_id));
|
||||
} else if (OB_FAIL(res.autoinc_params_.reserve(arg.src_tablet_ids_.count()))) {
|
||||
@ -238,7 +238,7 @@ int ObTabletAutoincSeqRpcHandler::batch_set_tablet_autoinc_seq(
|
||||
LOG_WARN("get palf role failed", K(ret));
|
||||
} else if (!is_strong_leader(role)) {
|
||||
ret = OB_NOT_MASTER;
|
||||
LOG_WARN("follwer received FetchTabletsSeq rpc", K(ret), K(ls_id));
|
||||
LOG_WARN("follower received FetchTabletsSeq rpc", K(ret), K(ls_id));
|
||||
} else if (OB_FAIL(MTL(ObLSService*)->get_ls(ls_id, ls_handle, ObLSGetMod::OBSERVER_MOD))) {
|
||||
LOG_WARN("get ls failed", K(ret), K(ls_id));
|
||||
} else {
|
||||
|
@ -60,7 +60,7 @@ struct ObWrsGetClusterVersionResponse
|
||||
OB_UNIS_VERSION(1);
|
||||
};
|
||||
|
||||
// Cluster Heartbeat Requst Struct
|
||||
// Cluster Heartbeat Request Struct
|
||||
struct ObWrsClusterHeartbeatRequest
|
||||
{
|
||||
common::ObAddr req_server_; // Who I am
|
||||
|
@ -796,14 +796,14 @@ TEST_F(TestServerManager, with_partition)
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.get_server_status(B, B_s));
|
||||
|
||||
ASSERT_TRUE(B_s.with_partition_);
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.clear_with_partiton(A, A_s.last_hb_time_));
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.clear_with_partition(A, A_s.last_hb_time_));
|
||||
|
||||
// last hb time mismatch, return success, keep with partition flag unchanged.
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.clear_with_partiton(B, B_s.last_hb_time_ + 1));
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.clear_with_partition(B, B_s.last_hb_time_ + 1));
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.get_server_status(B, B_s));
|
||||
ASSERT_TRUE(B_s.with_partition_);
|
||||
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.clear_with_partiton(B, B_s.last_hb_time_));
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.clear_with_partition(B, B_s.last_hb_time_));
|
||||
ASSERT_EQ(OB_SUCCESS, server_manager_.get_server_status(B, B_s));
|
||||
ASSERT_FALSE(B_s.with_partition_);
|
||||
}
|
||||
|
@ -421,7 +421,7 @@ int run_test() {
|
||||
if(!config.is_test_write()) {
|
||||
STORAGE_LOG(WARN, "no thread, cannot start write bench");
|
||||
} else {
|
||||
const int thread_no = config.get_total_partition_num();//one partiton one write thread
|
||||
const int thread_no = config.get_total_partition_num();//one partition one write thread
|
||||
MultiThreadWrite write(thread_no);
|
||||
if(OB_FAIL(write.init(schema_service, &restore_schema, config))){
|
||||
STORAGE_LOG(WARN, "fail to init query", K(ret));
|
||||
@ -459,8 +459,8 @@ int run_test() {
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
//multi thread single get speed test
|
||||
const int partiton_num = config.get_total_partition_num();
|
||||
const int thread_no = config.get_single_get_thread_count() * partiton_num;
|
||||
const int partition_num = config.get_total_partition_num();
|
||||
const int thread_no = config.get_single_get_thread_count() * partition_num;
|
||||
if(thread_no <= 0) {
|
||||
STORAGE_LOG(WARN, "no thread, cannot start single get bench");
|
||||
} else {
|
||||
@ -490,8 +490,8 @@ int run_test() {
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
//multi thread multi get speed test
|
||||
const int partiton_num = config.get_total_partition_num();
|
||||
int thread_no = config.get_multi_get_thread_count() * partiton_num;
|
||||
const int partition_num = config.get_total_partition_num();
|
||||
int thread_no = config.get_multi_get_thread_count() * partition_num;
|
||||
if(thread_no <= 0) {
|
||||
STORAGE_LOG(WARN, "no thread, cannot start multi get bench");
|
||||
} else {
|
||||
@ -521,8 +521,8 @@ int run_test() {
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
//multi thread scan speed test
|
||||
const int partiton_num = config.get_total_partition_num();
|
||||
int thread_no = config.get_scan_thread_count() * partiton_num;
|
||||
const int partition_num = config.get_total_partition_num();
|
||||
int thread_no = config.get_scan_thread_count() * partition_num;
|
||||
if(thread_no <= 0) {
|
||||
STORAGE_LOG(WARN, "no thread, cannot start scan speed bench");
|
||||
} else {
|
||||
|
@ -114,7 +114,7 @@ void MultiThreadSingleGet::run(obsys::CThread *thread, void *arg)
|
||||
int ret = OB_SUCCESS;
|
||||
ObStoragePerfRead read;
|
||||
read.assign_read_cols(read_cols_);
|
||||
// const int partiton_num = config_.get_total_partition_num();
|
||||
// const int partition_num = config_.get_total_partition_num();
|
||||
if(OB_FAIL(read.init(&config_, (int64_t)arg, &cache_suite_, restore_schema_,
|
||||
schema_service_, data_.get_partition_storage(), &barrier_))){
|
||||
STORAGE_LOG(WARN, "fail to init read", K(ret));
|
||||
@ -136,7 +136,7 @@ void MultiThreadMultiGet::run(obsys::CThread *thread, void *arg)
|
||||
|
||||
int ret = OB_SUCCESS;
|
||||
ObStoragePerfRead read;
|
||||
// const int partiton_num = config_.get_total_partition_num();
|
||||
// const int partition_num = config_.get_total_partition_num();
|
||||
read.assign_read_cols(this->read_cols_);
|
||||
if(OB_FAIL(read.init(&config_, (int64_t)arg, &cache_suite_, restore_schema_,
|
||||
schema_service_, data_.get_partition_storage(), &barrier_))){
|
||||
@ -158,7 +158,7 @@ void MultiThreadScan::run(obsys::CThread *thread, void *arg)
|
||||
{
|
||||
|
||||
int ret = OB_SUCCESS;
|
||||
//const int partiton_num = config_.get_total_partition_num();
|
||||
//const int partition_num = config_.get_total_partition_num();
|
||||
|
||||
ObStoragePerfRead read;
|
||||
read.assign_read_cols(this->read_cols_);
|
||||
|
@ -15,8 +15,8 @@ write_to_memtable_percent=0 #the ratio between size of data write to memtable wi
|
||||
|
||||
[read_parameter]
|
||||
single_get_thread_count=0 #each partition how many thread to do single get test, 0 mean not test single get
|
||||
multi_get_thread_count=0 #each partiton how many thread to do multi get test, 0 mean not test multi get
|
||||
scan_thread_count=1 #each partiton how many thread for scan test, 0 mean not test scan
|
||||
multi_get_thread_count=0 #each partition how many thread to do multi get test, 0 mean not test multi get
|
||||
scan_thread_count=1 #each partition how many thread for scan test, 0 mean not test scan
|
||||
total_single_row_count=1000 #every thread total get single row count
|
||||
single_get_times=1000
|
||||
total_multi_row_count=1000 #every thread total multi get row count
|
||||
|
Loading…
x
Reference in New Issue
Block a user