public static PlanNodeStatsEstimate computeSemiJoin ( PlanNodeStatsEstimate sourceStats , PlanNodeStatsEstimate filteringSourceStats , Symbol sourceJoinSymbol , Symbol filteringSourceJoinSymbol ) { return compute ( sourceStats , filteringSourceStats , sourceJoinSymbol , filteringSourceJoinSymbol , ( sourceJoinSymbolStats , filteringSourceJoinSymbolStats ) -> min ( filteringSourceJoinSymbolStats . getDistinctValuesCount ( ) , sourceJoinSymbolStats . getDistinctValuesCount ( ) ) ) ; }
Basically it works as low and high values were the same for source and filteringSource and just looks at NDVs .