@@ -19,7 +19,7 @@ package org.apache.spark.sql.execution.columnar
1919
2020import org .apache .spark .sql .catalyst .InternalRow
2121import org .apache .spark .sql .catalyst .expressions .{Attribute , AttributeMap , AttributeReference , RowOrdering }
22- import org .apache .spark .sql .catalyst .expressions .{UnsafeArrayData , UnsafeRow }
22+ import org .apache .spark .sql .catalyst .expressions .{UnsafeArrayData , UnsafeMapData , UnsafeRow }
2323import org .apache .spark .sql .catalyst .util .TypeUtils
2424import org .apache .spark .sql .types ._
2525import org .apache .spark .unsafe .types .UTF8String
@@ -357,15 +357,15 @@ private abstract class OrderableSafeColumnStats[T](dataType: DataType) extends C
357357 Array [Any ](lower, upper, nullCount, count, sizeInBytes)
358358}
359359
360- private [columnar] final class ArrayColumnStats (dataType : DataType )
360+ private [columnar] final class ArrayColumnStats (dataType : ArrayType )
361361 extends OrderableSafeColumnStats [UnsafeArrayData ](dataType) {
362362 override def getValue (row : InternalRow , ordinal : Int ): UnsafeArrayData =
363363 row.getArray(ordinal).asInstanceOf [UnsafeArrayData ]
364364
365365 override def copy (value : UnsafeArrayData ): UnsafeArrayData = value.copy()
366366}
367367
368- private [columnar] final class StructColumnStats (dataType : DataType )
368+ private [columnar] final class StructColumnStats (dataType : StructType )
369369 extends OrderableSafeColumnStats [UnsafeRow ](dataType) {
370370 private val numFields = dataType.asInstanceOf [StructType ].fields.length
371371
@@ -375,20 +375,12 @@ private[columnar] final class StructColumnStats(dataType: DataType)
375375 override def copy (value : UnsafeRow ): UnsafeRow = value.copy()
376376}
377377
378- private [columnar] final class MapColumnStats (dataType : DataType ) extends ColumnStats {
379- private val columnType = ColumnType (dataType)
380-
381- override def gatherStats (row : InternalRow , ordinal : Int ): Unit = {
382- if (! row.isNullAt(ordinal)) {
383- sizeInBytes += columnType.actualSize(row, ordinal)
384- count += 1
385- } else {
386- gatherNullStats()
387- }
388- }
378+ private [columnar] final class MapColumnStats (dataType : MapType )
379+ extends OrderableSafeColumnStats [UnsafeMapData ](dataType) {
380+ override def getValue (row : InternalRow , ordinal : Int ): UnsafeMapData =
381+ row.getMap(ordinal).asInstanceOf [UnsafeMapData ]
389382
390- override def collectedStatistics : Array [Any ] =
391- Array [Any ](null , null , nullCount, count, sizeInBytes)
383+ override def copy (value : UnsafeMapData ): UnsafeMapData = value.copy()
392384}
393385
394386private [columnar] final class NullColumnStats extends ColumnStats {
0 commit comments