| 144 | } |
| 145 | |
| 146 | std::shared_ptr<Statistics> MakeColumnStats(const format::ColumnMetaData& meta_data, |
| 147 | const ColumnDescriptor* descr, |
| 148 | ::arrow::MemoryPool* pool) { |
| 149 | auto metadata_type = LoadEnumSafe(&meta_data.type); |
| 150 | if (descr->physical_type() != metadata_type) { |
| 151 | throw ParquetException( |
| 152 | "ColumnMetaData type does not match ColumnDescriptor physical type: " + |
| 153 | TypeToString(metadata_type) + " vs. " + TypeToString(descr->physical_type())); |
| 154 | } |
| 155 | switch (metadata_type) { |
| 156 | case Type::BOOLEAN: |
| 157 | return MakeTypedColumnStats<BooleanType>(meta_data, descr, pool); |
| 158 | case Type::INT32: |
| 159 | return MakeTypedColumnStats<Int32Type>(meta_data, descr, pool); |
| 160 | case Type::INT64: |
| 161 | return MakeTypedColumnStats<Int64Type>(meta_data, descr, pool); |
| 162 | case Type::INT96: |
| 163 | return MakeTypedColumnStats<Int96Type>(meta_data, descr, pool); |
| 164 | case Type::DOUBLE: |
| 165 | return MakeTypedColumnStats<DoubleType>(meta_data, descr, pool); |
| 166 | case Type::FLOAT: |
| 167 | return MakeTypedColumnStats<FloatType>(meta_data, descr, pool); |
| 168 | case Type::BYTE_ARRAY: |
| 169 | return MakeTypedColumnStats<ByteArrayType>(meta_data, descr, pool); |
| 170 | case Type::FIXED_LEN_BYTE_ARRAY: |
| 171 | return MakeTypedColumnStats<FLBAType>(meta_data, descr, pool); |
| 172 | case Type::UNDEFINED: |
| 173 | break; |
| 174 | } |
| 175 | throw ParquetException("Can't decode page statistics for selected column type"); |
| 176 | } |
| 177 | |
| 178 | // Get KeyValueMetadata from parquet Thrift RowGroup or ColumnChunk metadata. |
| 179 | // |
no test coverage detected