sohami commented on a change in pull request #1504: DRILL-6792: Find the right 
probe side fragment wrapper & fix DrillBuf…
URL: https://github.com/apache/drill/pull/1504#discussion_r236396758
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java
 ##########
 @@ -1013,9 +1041,9 @@ public IterOutcome executeBuildPhase() throws 
SchemaChangeException {
     }
 
     if (spilledState.isFirstCycle() && enableRuntimeFilter) {
-      if (bloomFilters.size() > 0) {
+      if (bloomFilter2buildId.size() > 0) {
         int hashJoinOpId = this.popConfig.getOperatorId();
-        runtimeFilterReporter.sendOut(bloomFilters, probeFields, 
this.popConfig.getRuntimeFilterDef(), hashJoinOpId);
+        runtimeFilterReporter.sendOut(new 
ArrayList<>(bloomFilter2buildId.keySet()), probeFields, 
this.popConfig.getRuntimeFilterDef(), hashJoinOpId);
 
 Review comment:
   We create `BloomFilter` for each build side field. But here when sending out 
the filters for all fields the order of `bloomFilter` and `probeFields` in 
their respective list can be different. On the receiving end first message can 
have bloomFilter <bf11, bf12> with probe fields <f1, f2> whereas second message 
can have <bf22, bf21> and probe fields still <f1, f2>. Hence `aggregator` will 
aggregate <bf11 with bf22> and <bf12 with bf21> which can result in wrong 
results. Same is happening in `applyRuntimeFilter` in RTF operator where I 
guess it's assumed order of probe fields and bloomfilter list is consistent.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to