|
|
|
@@ -137,6 +137,10 @@ MSRStatus ShardColumn::GetColumnFromJson(const std::string &column_name, const j |
|
|
|
// Initialize num bytes |
|
|
|
*n_bytes = ColumnDataTypeSize[column_data_type]; |
|
|
|
auto json_column_value = columns_json[column_name]; |
|
|
|
if (!json_column_value.is_string() && !json_column_value.is_number()) { |
|
|
|
MS_LOG(ERROR) << "Conversion failed (" << json_column_value << ")."; |
|
|
|
return FAILED; |
|
|
|
} |
|
|
|
switch (column_data_type) { |
|
|
|
case ColumnFloat32: { |
|
|
|
return GetFloat<float>(data_ptr, json_column_value, false); |
|
|
|
@@ -152,7 +156,12 @@ MSRStatus ShardColumn::GetColumnFromJson(const std::string &column_name, const j |
|
|
|
} |
|
|
|
default: { |
|
|
|
// Convert string to c_str |
|
|
|
std::string tmp_string = json_column_value; |
|
|
|
std::string tmp_string; |
|
|
|
if (json_column_value.is_string()) { |
|
|
|
tmp_string = json_column_value.get<string>(); |
|
|
|
} else { |
|
|
|
tmp_string = json_column_value.dump(); |
|
|
|
} |
|
|
|
*n_bytes = tmp_string.size(); |
|
|
|
auto data = reinterpret_cast<const unsigned char *>(common::SafeCStr(tmp_string)); |
|
|
|
*data_ptr = std::make_unique<unsigned char[]>(*n_bytes); |
|
|
|
@@ -169,10 +178,6 @@ template <typename T> |
|
|
|
MSRStatus ShardColumn::GetFloat(std::unique_ptr<unsigned char[]> *data_ptr, const json &json_column_value, |
|
|
|
bool use_double) { |
|
|
|
std::unique_ptr<T[]> array_data = std::make_unique<T[]>(1); |
|
|
|
if (!json_column_value.is_string() && !json_column_value.is_number()) { |
|
|
|
MS_LOG(ERROR) << "Conversion to float failed (" << json_column_value << ")."; |
|
|
|
return FAILED; |
|
|
|
} |
|
|
|
if (json_column_value.is_number()) { |
|
|
|
array_data[0] = json_column_value; |
|
|
|
} else { |
|
|
|
|