Hi,

I am running into an issue where a materialize view rewriting is not occurring 
and the issue is narrowed down to usage of splitFilter.

The problem is in figuring out if two RexNode are equivalent or not. For simple 
expressions like (a > 1 AND b < 3) & (b < 3 AND a > 1) it works but for 
expressions like (a +b > 1) & (b + a > 1) splitFilter is unable to figure out 
that these two expressions are equivalent and as a result it ends up returning 
null. 
The reason is that equivalence is determined based on the string representation 
of the expressions, since the later two expressions have different string 
representation they are deemed inequivalent although they are semantically 
equivalent. 

Is there better way to figure out semantic equivalence of two rex node in 
calcite which may be take commutativity and associativity of operands into 
account? 

Thanks,
Vineet Garg

Reply via email to