Github user cloud-fan commented on a diff in the pull request:
https://github.com/apache/spark/pull/19743#discussion_r153514344
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/catalog/interface.scala
---
@@ -367,10 +368,11 @@ case class CatalogStatistics(
* on column names.
*/
def toPlanStats(planOutput: Seq[Attribute], cboEnabled: Boolean):
Statistics = {
- if (cboEnabled) {
- val attrStats = planOutput.flatMap(a => colStats.get(a.name).map(a
-> _))
- Statistics(sizeInBytes = sizeInBytes, rowCount = rowCount,
- attributeStats = AttributeMap(attrStats))
+ if (cboEnabled && rowCount.isDefined) {
+ val attrStats = AttributeMap(planOutput.flatMap(a =>
colStats.get(a.name).map(a -> _)))
+ // Estimate size as number of rows * row size.
+ val size = EstimationUtils.getOutputSize(planOutput, rowCount.get,
attrStats)
+ Statistics(sizeInBytes = size, rowCount = rowCount, attributeStats =
attrStats)
} else {
// When CBO is disabled, we apply the size-only estimation strategy,
so there's no need to
--- End diff --
now we need to update the comment: `when CBP is disabled or the table
doesn't have statistics`
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]