[fix](nereids) refine row count estimation for mark join (#38270) (#38297)

pick from master #38270
This commit is contained in:
xzj7019
2024-07-25 10:19:13 +08:00
committed by GitHub
parent 9a40cd5f9f
commit 8ad4390edb
6 changed files with 99 additions and 83 deletions

View File

@ -267,8 +267,8 @@ public class JoinEstimation {
}
private static Statistics estimateSemiOrAnti(Statistics leftStats, Statistics rightStats, Join join) {
if (hashJoinConditionContainsUnknownColumnStats(leftStats, rightStats, join)) {
double sel = computeSelectivityForBuildSideWhenColStatsUnknown(rightStats, join);
if (hashJoinConditionContainsUnknownColumnStats(leftStats, rightStats, join) || join.isMarkJoin()) {
double sel = join.isMarkJoin() ? 1.0 : computeSelectivityForBuildSideWhenColStatsUnknown(rightStats, join);
if (join.getJoinType().isLeftSemiOrAntiJoin()) {
return new StatisticsBuilder().setRowCount(leftStats.getRowCount() * sel)
.putColumnStatistics(leftStats.columnStatistics())