[Feature] Support boolean literals equals and notEquals
Support boolean literal evaluation, eg. true = true, (true = true) != false
- Save literal value as an object
- Register scalar function with func names and argument types. If a function cannot be found via function function names and argument types, look for functions through func names and # of params by default.
- Currently, we only support equal and notEqual type matching for boolean and double.
This might not be the best way to support literal equations let's first straighten out the target:
do we want to support this on transform or predicate
I think let's focus on transform functions. in this case I think the missing piece is to add literal handling to
binaryoperatortransformfunctionon both sidedo we want to do typed equal / not-equal check
let's only do non-typed check. b/c typed solution will be very complex: see #8596
with the basic solution in we can focus on #8596 to actually make the literals typed.
I am not sure if I fully understand about your point on literal support for binaryTransform. Shouldn't two literal eval fall into scalar function by default?
Or you meant expressions like SELECT <BOOL_EXPR> = TRUE ? this is already supported.
I am not against using proposal https://github.com/apache/pinot/issues/8596 depending on the priority. This PR is hacky and expensive. but I feel it is not worse than the implementation we already have right now.
Discussed offline. Since this is not urgent, I'll do some refactoring first and then fix function registration with parameter types.