@@ -41,9 +41,11 @@ TOptimizerStatistics NYql::ComputeJoinStats(const TOptimizerStatistics& leftStat
41
41
42
42
double newCard;
43
43
EStatisticsType outputType;
44
+ TVector<TString> joinedTableKeys;
44
45
45
46
if (IsPKJoin (rightStats,rightJoinKeys)) {
46
47
newCard = std::max (leftStats.Nrows ,rightStats.Nrows );
48
+ joinedTableKeys = leftStats.KeyColumns ;
47
49
if (leftStats.Type == EStatisticsType::BaseTable){
48
50
outputType = EStatisticsType::FilteredFactTable;
49
51
} else {
@@ -52,6 +54,7 @@ TOptimizerStatistics NYql::ComputeJoinStats(const TOptimizerStatistics& leftStat
52
54
}
53
55
else if (IsPKJoin (leftStats,leftJoinKeys)) {
54
56
newCard = std::max (leftStats.Nrows ,rightStats.Nrows );
57
+ joinedTableKeys = rightStats.KeyColumns ;
55
58
if (rightStats.Type == EStatisticsType::BaseTable){
56
59
outputType = EStatisticsType::FilteredFactTable;
57
60
} else {
@@ -69,7 +72,7 @@ TOptimizerStatistics NYql::ComputeJoinStats(const TOptimizerStatistics& leftStat
69
72
+ newCard
70
73
+ leftStats.Cost + rightStats.Cost ;
71
74
72
- return TOptimizerStatistics (outputType, newCard, newNCols, cost);
75
+ return TOptimizerStatistics (outputType, newCard, newNCols, cost, joinedTableKeys );
73
76
}
74
77
75
78
TOptimizerStatistics NYql::ComputeJoinStats (const TOptimizerStatistics& leftStats, const TOptimizerStatistics& rightStats,
0 commit comments