Thanks for explanation. So for single minor fragment left deep tree case as 
shown below there will be only one `RuntimeFilterOperator` (RTF) inserted above 
left most Scan. Now when `next() `is called then first upper HJ build side will 
be evaluated which will create BloomFilter and send to RTF operator. Later 
`next()` will be called on probe side of first upper HJ which will again result 
in calling `next() `on build side of lower hash join. When build side of lower 
join is completed then it will again send its BloomFilter to RTF operator. 
Considering bloom filter received is from 2 different HJ operators (hence 
different `srcHashJoinOpId`) it will discard the first one and keep the second 
one. I guess this is done because join condition column can be different in 
different HashJoin ?

```
      HJ
     /  \
   HJ    Scan
  /  \
Scan  Scan
```

```
      HJ
     /  \
   HJ    Scan
  /  \
RTF  Scan
  |
Scan
```

[ Full content available at: https://github.com/apache/drill/pull/1459 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to