std::shared_ptr DataType::ArrowDataTypeToDataType()

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);
  }
}