protected function OptimizeBinaryOperationExpression(BinaryOperationExpression $Expression)
{
$LeftOperand = $Expression->GetLeftOperandExpression();
$RightOperand = $Expression->GetRightOperandExpression();
if ($LeftOperand instanceof ReviveColumnExpression && $this->IsExpressionConstant($RightOperand)) {
$this->OptimizeReviveColumnCompareConstantExpression($LeftOperand, $RightOperand);
} else {
if ($RightOperand instanceof ReviveColumnExpression && $this->IsExpressionConstant($LeftOperand)) {
$this->OptimizeReviveColumnCompareConstantExpression($RightOperand, $LeftOperand);
} else {
return $Expression;
}
}
return Expression::BinaryOperation($LeftOperand, $Expression->GetOperator(), $RightOperand);
}