pinot icon indicating copy to clipboard operation
pinot copied to clipboard

[Feature] Support boolean literals equals and notEquals

Open 61yao opened this issue 3 years ago • 2 comments

Support boolean literal evaluation, eg. true = true, (true = true) != false

  1. Save literal value as an object
  2. 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.
  3. Currently, we only support equal and notEqual type matching for boolean and double.

61yao avatar Sep 01 '22 20:09 61yao

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 binaryoperatortransformfunction on both side

do 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.

61yao avatar Sep 06 '22 21:09 61yao

Discussed offline. Since this is not urgent, I'll do some refactoring first and then fix function registration with parameter types.

61yao avatar Sep 10 '22 07:09 61yao