Describe the bug
The current implementation of apply_operator does not implement all possible cases of 'and' and 'or' correctly
To Reproduce
There are quite a few cases that are not correct. One example is
let t = NullableInterval::NotNull { values: Interval::CERTAINLY_TRUE };
let u = NullableInterval::Null { datatype: DataType::Boolean };
t.apply_operator(&Operator::Or, &u).unwrap();
In SQL true OR NULL evaluates to true, so this should return the same value as t. In practice the same value as u is returned.
Expected behavior
The interval arithmetic for boolean NullableInterval matches SQLs boolean arithmetic.
Additional context
No response