Copilot commented on code in PR #6824:
URL: https://github.com/apache/hive/pull/6824#discussion_r4122036258
##########
ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicPruningEventDesc.java:
##########
@@ -127,8 +123,7 @@ public boolean isSame(OperatorDesc other) {
DynamicPruningEventDesc otherDesc = (DynamicPruningEventDesc) other;
return Objects.equals(getTargetColumnName(),
otherDesc.getTargetColumnName()) &&
Objects.equals(getTargetColumnType(),
otherDesc.getTargetColumnType()) &&
- Objects.equals(getPartKeyString(), otherDesc.getPartKeyString()) &&
- Objects.equals(getPartPredicateString(),
otherDesc.getPartPredicateString());
+ Objects.equals(getPartKeyString(), otherDesc.getPartKeyString());
Review Comment:
The parent-aware check does not actually establish that the dynamic-list
sources are the same here. `areMergeableExtendedCheck` calls
`compareAndGatherOps` on the event operators, but
`ExprNodeDynamicListDesc.source` is `ctx.generator`, which is a sibling of the
event branch created from `ctx.generator.getParentOperators().get(0)`, so that
generator is never compared. Consequently, two events with the same target
metadata/part key but different source operators can pass this check; with
downstream merging enabled, one event can then be removed and its distinct
runtime predicate is no longer registered in `MapWork`. Compare the
generator/source operators explicitly (or keep predicate-sensitive equality for
this generic path) and add a regression case with different DPP sources.
--
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]