Do not report ERROR when sample rate equals 100
This commit is contained in:
@ -558,30 +558,13 @@ int ObParser::split_start_with_pl(const ObString &stmt,
|
||||
ObString part(remain, stmt.ptr());
|
||||
|
||||
if (OB_FAIL(tmp_ret = parse(part, parse_result, parse_mode, false, true))) {
|
||||
if(parse_result.result_tree_ != NULL && parse_result.result_tree_->num_child_ > 0) {
|
||||
ret = OB_SUCCESS;
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < parse_result.result_tree_->num_child_; ++i) {
|
||||
int64_t str_len = parse_result.result_tree_->children_[i]->str_len_;
|
||||
int64_t offset = parse_result.result_tree_->children_[i]->pos_;
|
||||
ObString query(str_len, stmt.ptr() + offset);
|
||||
OZ(queries.push_back(query));
|
||||
}
|
||||
int64_t success_len = 0;
|
||||
OX(success_len = parse_result.result_tree_->children_[parse_result.result_tree_->num_child_ - 1]->str_len_ +
|
||||
parse_result.result_tree_->children_[parse_result.result_tree_->num_child_ - 1]->pos_);
|
||||
if(OB_SUCC(ret) && ';' == stmt[success_len]) success_len++;
|
||||
CK(success_len < remain);
|
||||
ObString error_part(remain - success_len, stmt.ptr() + success_len);
|
||||
OZ(queries.push_back(error_part));
|
||||
} else {
|
||||
ret = queries.push_back(part);
|
||||
}
|
||||
ret = queries.push_back(part);
|
||||
if (OB_SUCCESS == ret) {
|
||||
parse_stat.parse_fail_ = true;
|
||||
parse_stat.fail_query_idx_ = queries.count() - 1;
|
||||
parse_stat.fail_ret_ = tmp_ret;
|
||||
}
|
||||
LOG_WARN("fail parse multi part", K(part), K(stmt), K(tmp_ret));
|
||||
LOG_WARN("fail parse multi part", K(part), K(stmt), K(ret));
|
||||
} else {
|
||||
CK(remain == parse_result.end_col_);
|
||||
CK(nullptr != bak_allocator);
|
||||
@ -630,7 +613,6 @@ int ObParser::split_multiple_stmt(const ObString &stmt,
|
||||
ParseMode parse_mode = MULTI_MODE;
|
||||
int64_t offset = 0;
|
||||
int64_t remain = stmt.length();
|
||||
int64_t semicolon_offset = INT64_MIN;
|
||||
|
||||
parse_stat.reset();
|
||||
// 绕过parser对空查询处理不友好的方法:自己把末尾空格去掉
|
||||
@ -641,16 +623,12 @@ int ObParser::split_multiple_stmt(const ObString &stmt,
|
||||
if (remain > 0 && '\0' == stmt[remain - 1]) {
|
||||
--remain;
|
||||
}
|
||||
//再删除末尾空格和分号
|
||||
//再删除末尾空格
|
||||
while (remain > 0 && ((ISSPACE(stmt[remain - 1])) ||
|
||||
(lib::is_mysql_mode() && stmt[remain - 1] == ';'))) {
|
||||
if (stmt[remain - 1] == ';') {
|
||||
semicolon_offset = remain - 1;
|
||||
}
|
||||
(lib::is_mysql_mode() && is_prepare && stmt[remain - 1] == ';'))) {
|
||||
--remain;
|
||||
}
|
||||
//留下最多一个分号
|
||||
remain = max(remain, semicolon_offset + 1);
|
||||
|
||||
// 对于空语句的特殊处理
|
||||
if (OB_UNLIKELY(0 >= remain)) {
|
||||
ObString part; // 空串
|
||||
|
||||
Reference in New Issue
Block a user