in src/parquet/arrow/arrow-reader-writer-test.cc [144:190]
ParquetType::type get_physical_type(const ::DataType& type) {
switch (type.id()) {
case ArrowId::BOOL:
return ParquetType::BOOLEAN;
case ArrowId::UINT8:
case ArrowId::INT8:
case ArrowId::UINT16:
case ArrowId::INT16:
case ArrowId::UINT32:
case ArrowId::INT32:
return ParquetType::INT32;
case ArrowId::UINT64:
case ArrowId::INT64:
return ParquetType::INT64;
case ArrowId::FLOAT:
return ParquetType::FLOAT;
case ArrowId::DOUBLE:
return ParquetType::DOUBLE;
case ArrowId::BINARY:
return ParquetType::BYTE_ARRAY;
case ArrowId::STRING:
return ParquetType::BYTE_ARRAY;
case ArrowId::FIXED_SIZE_BINARY:
case ArrowId::DECIMAL:
return ParquetType::FIXED_LEN_BYTE_ARRAY;
case ArrowId::DATE32:
return ParquetType::INT32;
case ArrowId::DATE64:
// Convert to date32 internally
return ParquetType::INT32;
case ArrowId::TIME32:
return ParquetType::INT32;
case ArrowId::TIME64:
return ParquetType::INT64;
case ArrowId::TIMESTAMP:
return ParquetType::INT64;
case ArrowId::DICTIONARY: {
const ::arrow::DictionaryType& dict_type =
static_cast<const ::arrow::DictionaryType&>(type);
return get_physical_type(*dict_type.dictionary()->type());
}
default:
break;
}
DCHECK(false) << "cannot reach this code";
return ParquetType::INT32;
}