| 3214 | } |
| 3215 | |
| 3216 | bool Optimizer::getEquiJoinKeys(BoolExprNode* boolean, |
| 3217 | NestConst<ValueExprNode>* node1, |
| 3218 | NestConst<ValueExprNode>* node2) |
| 3219 | { |
| 3220 | auto cmpNode = nodeAs<ComparativeBoolNode>(boolean); |
| 3221 | if (!cmpNode || (cmpNode->blrOp != blr_eql && cmpNode->blrOp != blr_equiv)) |
| 3222 | return false; |
| 3223 | |
| 3224 | auto arg1 = cmpNode->arg1; |
| 3225 | auto arg2 = cmpNode->arg2; |
| 3226 | |
| 3227 | if (!getEquiJoinKeys(arg1, arg2, true)) |
| 3228 | return false; |
| 3229 | |
| 3230 | *node1 = arg1; |
| 3231 | *node2 = arg2; |
| 3232 | return true; |
| 3233 | } |
| 3234 | |
| 3235 | bool Optimizer::getEquiJoinKeys(NestConst<ValueExprNode>& node1, |
| 3236 | NestConst<ValueExprNode>& node2, |
no test coverage detected