Copilot commented on code in PR #18874:
URL: https://github.com/apache/pinot/pull/18874#discussion_r3799294511
##########
pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/plan/server/ServerPlanRequestUtils.java:
##########
@@ -398,7 +399,11 @@ private static List<Expression>
computeInOperands(List<Object[]> dataContainer,
}
Arrays.sort(arrBytes);
for (int rowIdx = 0; rowIdx < numRows; rowIdx++) {
-
expressions.add(RequestUtils.getLiteralExpression(arrBytes[rowIdx].getBytes()));
+ if (columnDataType == DataSchema.ColumnDataType.UUID) {
+
expressions.add(RequestUtils.getLiteralExpression(UuidUtils.toString(arrBytes[rowIdx])));
+ } else {
+
expressions.add(RequestUtils.getLiteralExpression(arrBytes[rowIdx].getBytes()));
Review Comment:
Canonical UUID strings are invalid when this dynamic filter is lowered as an
`InTransformFunction`. That path dispatches UUID through stored `BYTES` and
hex-decodes each bare string (`InTransformFunction.java:87,120-124`); its
existing test explicitly rejects a bare canonical UUID
(`InTransformFunctionTest.java:258-262`). A dynamic-broadcast semi join whose
left key is a projected UUID expression therefore fails with
`BadQueryRequestException`, although identifier keys take the
predicate-evaluator path and pass the new integration test. Preserve the
canonical literal for identifier predicates, but use typed `CAST(... AS UUID)`
operands (or add logical-UUID parsing to the transform path) for expression
keys, and cover a semi join with an expression on the left key.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]