code: func (la *LogicalApply) DeriveStats(childStats []*property.StatsInfo) (*property.StatsInfo, error) {
  	leftProfile := childStats[0]
  	la.stats = &property.StatsInfo{
  		RowCount:    leftProfile.RowCount,
  		Cardinality: make([]float64, la.schema.Len()),
  	}
  	copy(la.stats.Cardinality, leftProfile.Cardinality)
  	if la.JoinType == LeftOuterSemiJoin || la.JoinType == AntiLeftOuterSemiJoin {
  		la.stats.Cardinality[len(la.stats.Cardinality)-1] = 2.0
  	} else {
  		for i := la.children[0].Schema().Len(); i < la.schema.Len(); i++ {
  			la.stats.Cardinality[i] = leftProfile.RowCount
  		}
  	}
  	return la.stats, nil
  }
docs: // DeriveStats implement LogicalPlan DeriveStats interface.