While reading the code I found following in ExpressionOperators like GreaterThanExpr, LessThanExpr etc.,
assert(left instanceof Comparable); assert(right instanceof Comparable); if (((Comparable)left.result).compareTo((Comparable)right.result) > 0) There is no use of assert statements here. Since if assertions are false, ClassCast Exception will be thrown in any case on the very next line and execution will correctly halt. Since we recommend to push-up filter, the cost of doing instanceof may potentially be paid for every tuple in the dataset. Getting rid of these assert statements will save us few cycles.