| 224 | } |
| 225 | |
| 226 | bool HdfsJsonScanner::HandleConvertError(const SlotDescriptor* desc, const char* data, |
| 227 | int len) { |
| 228 | error_in_row_ = true; |
| 229 | tuple_->SetNull(desc->null_indicator_offset()); |
| 230 | if (state_->LogHasSpace() || state_->abort_on_error()) { |
| 231 | const HdfsTableDescriptor* table = scan_node_->hdfs_table(); |
| 232 | constexpr int max_view_len = 50; |
| 233 | string data_view = string(data, std::min(len, max_view_len)); |
| 234 | if (len > max_view_len) data_view += "..."; |
| 235 | string msg = Substitute("Error converting column: $0.$1.$2, type: $3, data: '$4'", |
| 236 | table->database(), table->name(), table->GetColumnDesc(desc).name(), |
| 237 | desc->type().DebugString(), data_view); |
| 238 | |
| 239 | if (state_->LogHasSpace()) { |
| 240 | state_->LogError(ErrorMsg(TErrorCode::GENERAL, msg), 2); |
| 241 | } |
| 242 | |
| 243 | if (state_->abort_on_error() && parse_status_.ok()) parse_status_ = Status(msg); |
| 244 | } |
| 245 | return parse_status_.ok(); |
| 246 | } |
| 247 | |
| 248 | Status HdfsJsonScanner::HandleError(rapidjson::ParseErrorCode error, size_t offset) { |
| 249 | if (error == rapidjson::kParseErrorTermination) { |
nothing calls this directly
no test coverage detected