Make 'valueIn' MV transform function work with the multi-stage query engine #13443
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
valueIn
/VALUE_IN
transform function didn't work with the multi-stage query engine and resulted in errors likeNo match found for function signature valueIn(<VARCHAR ARRAY>, <CHARACTER>, <CHARACTER>)
.TransformFunctionType
which are used while registering the Pinot transform functions in Calcite's operator table.VALUE_IN
function takes a multi-value column as its first input, followed by any number of constant value arguments. Hence, we're using Calcite's variadic operand type checker in this patch.SqlTypeFamily.ARRAY
) with all but the first two being optional. This would however introduce an artificial limitation on the number of operands that theVALUE_IN
function can take (also it would look fairly ugly - both in code, as well as Calcite's generated function signature).