@@ -45,8 +45,12 @@ TConclusion<std::shared_ptr<IChunkedArray>> TConstructor::DoDeserializeFromStrin
4545 std::make_shared<arrow::Schema>(arrow::FieldVector ({ std::make_shared<arrow::Field>(" val" , externalInfo.GetColumnType ()) }));
4646 auto resultVariants = externalInfo.GetDefaultSerializer ()->Deserialize (TString (blobVariants.data (), blobVariants.size ()), schemaVariants);
4747 if (!resultVariants.ok ()) {
48- return TConclusionStatus::Fail (
49- " cannot parse dictionary variants: " + resultVariants.status ().ToString () + " as " + externalInfo.GetColumnType ()->ToString ());
48+ return TConclusionStatus::Fail (TStringBuilder{}
49+ << " Internal deserialization error. type: dictionary (schema variants), schema: " << schemaVariants->ToString ()
50+ << " records count: " << externalInfo.GetRecordsCount ()
51+ << " not null records count: " << (externalInfo.GetNotNullRecordsCount () ? ToString (*externalInfo.GetNotNullRecordsCount ()) : TString{" unknown" })
52+ << " reason: " << resultVariants.status ().ToString ()
53+ << " original data: " << Base64Encode (TString (blobVariants.data (), blobVariants.size ())));
5054 }
5155 auto rbVariants = TStatusValidator::GetValid (resultVariants);
5256 AFL_VERIFY (rbVariants->num_columns () == 1 );
@@ -55,7 +59,13 @@ TConclusion<std::shared_ptr<IChunkedArray>> TConstructor::DoDeserializeFromStrin
5559 auto schemaRecords = std::make_shared<arrow::Schema>(arrow::FieldVector ({ std::make_shared<arrow::Field>(" val" , type) }));
5660 auto resultRecords = externalInfo.GetDefaultSerializer ()->Deserialize (TString (blobRecords.data (), blobRecords.size ()), schemaRecords);
5761 if (!resultRecords.ok ()) {
58- return TConclusionStatus::Fail (resultRecords.status ().ToString ());
62+ return TConclusionStatus::Fail (TStringBuilder{}
63+ << " Internal deserialization error. type: dictionary (schema records), schema: " << schemaRecords->ToString ()
64+ << " records count: " << externalInfo.GetRecordsCount ()
65+ << " not null records count: " << (externalInfo.GetNotNullRecordsCount () ? ToString (*externalInfo.GetNotNullRecordsCount ()) : TString{" unknown" })
66+ << " variants count: " << rbVariants->num_rows ()
67+ << " reason: " << resultRecords.status ().ToString ()
68+ << " original data: " << Base64Encode (TString (blobRecords.data (), blobRecords.size ())));
5969 }
6070 auto rbRecords = TStatusValidator::GetValid (resultRecords);
6171 AFL_VERIFY (rbRecords->num_columns () == 1 );
0 commit comments