98
98
}
99
99
}
100
100
101
- macro_rules! create_builder_for_type {
102
- ( $data_type: expr, $variant: ident, $type: ty) => {
103
- ColumnStatisticsBuilder :: $variant( CommonBuilder :: <$type>:: create( $data_type) )
104
- } ;
105
- ( $data_type: expr, $variant: ident, $type: ty, decimal) => {
106
- ColumnStatisticsBuilder :: $variant( DecimalBuilder :: <$type>:: create( $data_type) )
107
- } ;
108
- }
109
-
110
101
pub fn create_column_stats_builder ( data_type : & DataType ) -> ColumnStatisticsBuilder {
111
102
let inner_type = data_type. remove_nullable ( ) ;
112
103
macro_rules! match_number_type_create {
@@ -125,16 +116,28 @@ pub fn create_column_stats_builder(data_type: &DataType) -> ColumnStatisticsBuil
125
116
DataType :: Number ( num_type) => {
126
117
match_number_type_create ! ( num_type)
127
118
}
128
- DataType :: String => create_builder_for_type ! ( inner_type, String , StringType ) ,
129
- DataType :: Date => create_builder_for_type ! ( inner_type, Date , DateType ) ,
130
- DataType :: Timestamp => create_builder_for_type ! ( inner_type, Timestamp , TimestampType ) ,
119
+ DataType :: String => {
120
+ ColumnStatisticsBuilder :: String ( CommonBuilder :: < StringType > :: create ( inner_type) )
121
+ }
122
+ DataType :: Date => {
123
+ ColumnStatisticsBuilder :: Date ( CommonBuilder :: < DateType > :: create ( inner_type) )
124
+ }
125
+ DataType :: Timestamp => {
126
+ ColumnStatisticsBuilder :: Timestamp ( CommonBuilder :: < TimestampType > :: create ( inner_type) )
127
+ }
131
128
DataType :: Decimal ( size) => {
132
129
if size. can_carried_by_64 ( ) {
133
- create_builder_for_type ! ( inner_type, Decimal64 , Decimal64Type , decimal)
130
+ ColumnStatisticsBuilder :: Decimal64 ( DecimalBuilder :: < Decimal64Type > :: create (
131
+ inner_type,
132
+ ) )
134
133
} else if size. can_carried_by_128 ( ) {
135
- create_builder_for_type ! ( inner_type, Decimal128 , Decimal128Type , decimal)
134
+ ColumnStatisticsBuilder :: Decimal128 ( DecimalBuilder :: < Decimal128Type > :: create (
135
+ inner_type,
136
+ ) )
136
137
} else {
137
- create_builder_for_type ! ( inner_type, Decimal256 , Decimal256Type , decimal)
138
+ ColumnStatisticsBuilder :: Decimal256 ( DecimalBuilder :: < Decimal256Type > :: create (
139
+ inner_type,
140
+ ) )
138
141
}
139
142
}
140
143
_ => unreachable ! ( "Unsupported data type: {:?}" , data_type) ,
0 commit comments