Open kirkrodrigues opened 1 year ago
This query fails because mvCol = 'test'
is treated as a transform function (instead of filter predicate), and currently BinaryOperatorTransformFunction
doesn't support MV as input.
SELECT * FROM table WHERE mvCol = 'test'
should work
Hey Jackie, yeah, the query is contrived to expose the bug. I actually encountered it while writing a query rewriter:
SELECT * FROM table WHERE clpMatch("message", '*123*')
is parsed into a PinotQuery
that's equivalent to
SELECT * FROM table WHERE clpMatch("message", '*123*') = true
.clpMatch
so the query becomes something like
SELECT * FROM table WHERE (message_logtype = ... AND message_dictionaryVars LIKE '*123*' ...) = true
,
where message_dictionaryVars
is an MV column. So the query fails with the above error.I'm currently working around this by specially detecting the boolean comparison with clpMatch
, but it would be great to resolve this correctly.
Attempting to execute a query like
SELECT * FROM table WHERE (mvCol = 'test') = true
, fails with the exception:Version
apache/pinot@3f36623