in cpp/src/graphar/types.cc [59:89]
std::shared_ptr<DataType> DataType::ArrowDataTypeToDataType(
const std::shared_ptr<arrow::DataType>& type) {
switch (type->id()) {
case arrow::Type::BOOL:
return boolean();
case arrow::Type::INT32:
return int32();
case arrow::Type::INT64:
return int64();
case arrow::Type::FLOAT:
return float32();
case arrow::Type::DOUBLE:
return float64();
case arrow::Type::STRING:
return string();
case arrow::Type::LARGE_STRING:
return string();
case arrow::Type::DATE32:
return date();
case arrow::Type::TIMESTAMP:
case arrow::Type::DATE64: // Date64 of Arrow is used to represent timestamp
// milliseconds
return timestamp();
case arrow::Type::LIST:
return list(ArrowDataTypeToDataType(type->field(0)->type()));
default:
std::string msg = "The arrow data type " + type->name() +
" is not supported yet in GraphAr";
throw std::runtime_error(msg);
}
}