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: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to