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