[bugfix] fix join limit push down bug

This commit is contained in:
obdev
2022-11-17 05:05:40 +00:00
committed by wangzelin.wzl
parent fabb33a202
commit 798d3f50d6
5 changed files with 363 additions and 309 deletions

View File

@ -1572,7 +1572,7 @@ int ObDMLStmt::remove_part_expr_items(ObIArray<uint64_t> &table_ids)
int ObDMLStmt::remove_part_expr_items(uint64_t table_id)
{
int ret = OB_SUCCESS;
for (int64_t i = part_expr_items_.count() - 1; i >= 0; --i) {
for (int64_t i = part_expr_items_.count() - 1; OB_SUCC(ret) && i >= 0; --i) {
if (table_id == part_expr_items_.at(i).table_id_) {
if (OB_FAIL(part_expr_items_.remove(i))) {
LOG_WARN("fail to remove part expr item", K(table_id), K(ret));
@ -4187,6 +4187,35 @@ int ObDMLStmt::set_check_constraint_item(CheckConstraintItem &check_constraint_i
return ret;
}
int ObDMLStmt::remove_check_constraint_item(const uint64_t table_id)
{
int ret = OB_SUCCESS;
for (int64_t i = check_constraint_items_.count() - 1; OB_SUCC(ret) && i >= 0; --i) {
if (table_id == check_constraint_items_.at(i).table_id_) {
if (OB_FAIL(check_constraint_items_.remove(i))) {
LOG_WARN("failed to remove check constraint item", K(ret), K(table_id));
}
}
}
return ret;
}
int ObDMLStmt::get_check_constraint_items(const uint64_t table_id,
CheckConstraintItem &check_constraint_item)
{
int ret = OB_SUCCESS;
for (int64_t i = 0; OB_SUCC(ret) && i < check_constraint_items_.count(); ++i) {
if (table_id != check_constraint_items_.at(i).table_id_) {
// do nothing
} else if (OB_FAIL(check_constraint_item.assign(check_constraint_items_.at(i)))) {
LOG_WARN("failed to assign check constraint item", K(ret));
} else {
break;
}
}
return ret;
}
int ObDMLStmt::get_qb_name(ObString &qb_name) const
{
int ret = OB_SUCCESS;

View File

@ -970,6 +970,10 @@ public:
const common::ObIArray<CheckConstraintItem> &get_check_constraint_items() const {
return check_constraint_items_; }
int set_check_constraint_item(CheckConstraintItem &check_constraint_item);
int remove_check_constraint_item(const uint64_t table_id);
int get_check_constraint_items(const uint64_t table_id,
CheckConstraintItem &check_constraint_item);
int get_qb_name(ObString &qb_name) const;
TO_STRING_KV(N_STMT_TYPE, ((int)stmt_type_),