public boolean tryProbe ( BaseRow record ) throws IOException { if ( ! this . probeIterator . hasSource ( ) ) { // set the current probe value when probeIterator is null at the begging. this . probeIterator . setInstance ( record ) ; } // calculate the hash BinaryRow probeKey = probeSideProjection . apply ( record ) ; final int hash = hash ( probeKey . hashCode ( ) , this . currentRecursionDepth ) ; BinaryHashPartition p = this . partitionsBeingBuilt . get ( hash % partitionsBeingBuilt . size ( ) ) ; // for an in-memory partition, process set the return iterators, else spill the probe records if ( p . isInMemory ( ) ) { this . probeKey = probeKey ; this . probeRow = record ; p . bucketArea . startLookup ( hash ) ; return true ; } else { if ( p . testHashBloomFilter ( hash ) ) { BinaryRow row = originProbeSideSerializer . baseRowToBinary ( record ) ; p . insertIntoProbeBuffer ( row ) ; } return false ; } }
Find matched build side rows for a probe row .