You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-1155 Remove try-catch block by an explicit check for a null pointer.
This commit is contained in:
@ -1375,15 +1375,16 @@ bool buildPredicateItem(Item_func* ifp, gp_walk_info* gwip)
|
|||||||
ParseTree* equal_ptp = or_ptp->left();
|
ParseTree* equal_ptp = or_ptp->left();
|
||||||
ParseTree* nullck_left_ptp = and_ptp->left();
|
ParseTree* nullck_left_ptp = and_ptp->left();
|
||||||
ParseTree* nullck_right_ptp = and_ptp->right();
|
ParseTree* nullck_right_ptp = and_ptp->right();
|
||||||
SimpleFilter *sf = dynamic_cast<SimpleFilter*>(nullck_left_ptp->data());
|
SimpleFilter *sf_left_nullck = dynamic_cast<SimpleFilter*>(nullck_left_ptp->data());
|
||||||
try
|
SimpleFilter *sf_right_nullck = dynamic_cast<SimpleFilter*>(nullck_right_ptp->data());
|
||||||
{
|
SimpleFilter *sf_equal = dynamic_cast<SimpleFilter*>(equal_ptp->data());
|
||||||
sf->op()->reverseOp();
|
|
||||||
sf = dynamic_cast<SimpleFilter*>(nullck_right_ptp->data());
|
if (sf_left_nullck && sf_right_nullck && sf_equal) {
|
||||||
sf->op()->reverseOp();
|
// Negate the null checks
|
||||||
sf = dynamic_cast<SimpleFilter*>(equal_ptp->data());
|
sf_left_nullck->op()->reverseOp();
|
||||||
sf->op()->reverseOp();
|
sf_right_nullck->op()->reverseOp();
|
||||||
// Rehook the trees
|
sf_equal->op()->reverseOp();
|
||||||
|
// Rehook the nodes
|
||||||
ptp = and_ptp;
|
ptp = and_ptp;
|
||||||
ptp->left(equal_ptp);
|
ptp->left(equal_ptp);
|
||||||
ptp->right(or_ptp);
|
ptp->right(or_ptp);
|
||||||
@ -1392,10 +1393,9 @@ bool buildPredicateItem(Item_func* ifp, gp_walk_info* gwip)
|
|||||||
gwip->ptWorkStack.pop();
|
gwip->ptWorkStack.pop();
|
||||||
gwip->ptWorkStack.push(ptp);
|
gwip->ptWorkStack.push(ptp);
|
||||||
}
|
}
|
||||||
catch (std::exception& ex )
|
else {
|
||||||
{
|
|
||||||
gwip->fatalParseError = true;
|
gwip->fatalParseError = true;
|
||||||
gwip->parseErrorText = ex.what();
|
gwip->parseErrorText = IDBErrorInfo::instance()->errorMsg(ERR_ASSERTION_FAILURE);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user