In optimizer procedure, We pull up "x = 1" first, then when we encounter "x <> 2", can be simplified to "x = 1". So the result will be "x = 1"
When we pull up "x <> 2" first, it can't optimize the "x = 1". So we need SARG to optimize it again.
Because EQUALS and NOT-EQUALS operator will make the left RexNode become [CAST($t0): INTEGER NOT NULL] when the left node and right node have a least restrictive type. So we need to handle the CAST operator.