fix can not remove const exec param in child stmtents
This commit is contained in:
@ -1759,6 +1759,7 @@ int ObDMLStmt::remove_const_exec_param(ObDMLStmt *stmt, ObSQLSessionInfo *sessio
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObSEArray<ObRawExprPointer, 4> exprs;
|
||||
ObSEArray<ObSelectStmt*, 4> child_stmts;
|
||||
is_happened = false;
|
||||
if (OB_ISNULL(stmt) || OB_ISNULL(session_info)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
@ -1785,6 +1786,26 @@ int ObDMLStmt::remove_const_exec_param(ObDMLStmt *stmt, ObSQLSessionInfo *sessio
|
||||
LOG_TRACE("succeed to remove const exec param", K(ret), K(tmp_happened), K(*expr));
|
||||
}
|
||||
}
|
||||
if (OB_FAIL(ret)) {
|
||||
} else if (OB_FAIL(stmt->get_child_stmts(child_stmts))) {
|
||||
LOG_WARN("failed to get child stmts", K(ret));
|
||||
} else {
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < child_stmts.count(); ++i) {
|
||||
bool tmp_happened = false;
|
||||
ObSelectStmt* child_stmt = NULL;
|
||||
if (OB_ISNULL(child_stmt = child_stmts.at(i))) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("stmt is null", K(ret), K(child_stmt));
|
||||
} else if (OB_FAIL(SMART_CALL(remove_const_exec_param(child_stmt,
|
||||
session_info,
|
||||
tmp_happened)))) {
|
||||
LOG_WARN("failed to remove const exec param", K(ret));
|
||||
} else {
|
||||
is_happened |= tmp_happened;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user