@@ -13,6 +13,25 @@ func RecordsDiff(sc *arrow.Schema, have, want []arrow.Record) string {
1313 return TableDiff (array .NewTableFromRecords (sc , have ), array .NewTableFromRecords (sc , want ))
1414}
1515
16+ func getUnifiedDiff (edits array.Edits , wantCol , haveCol arrow.Array ) string {
17+ defer func () {
18+ if r := recover (); r != nil {
19+ wantDataType := wantCol .DataType ()
20+ wantData := make ([]string , wantCol .Len ())
21+ for i := 0 ; i < wantCol .Len (); i ++ {
22+ wantData [i ] = wantCol .ValueStr (i )
23+ }
24+ haveDataType := haveCol .DataType ()
25+ haveData := make ([]string , haveCol .Len ())
26+ for i := 0 ; i < haveCol .Len (); i ++ {
27+ haveData [i ] = haveCol .ValueStr (i )
28+ }
29+ panic (fmt .Errorf ("panic in getUnifiedDiff: %s, want: [%s], have: [%s], want type: %s, have type: %s" , r , strings .Join (wantData , ", " ), strings .Join (haveData , ", " ), wantDataType , haveDataType ))
30+ }
31+ }()
32+ return edits .UnifiedDiff (wantCol , haveCol )
33+ }
34+
1635func TableDiff (have , want arrow.Table ) string {
1736 if array .TableApproxEqual (have , want , array .WithUnorderedMapKeys (true )) {
1837 return ""
@@ -39,7 +58,7 @@ func TableDiff(have, want arrow.Table) string {
3958 if err != nil {
4059 panic (fmt .Errorf ("want: %v, have: %v, error: %w" , wantCol .DataType (), haveCol .DataType (), err ))
4160 }
42- diff := edits . UnifiedDiff ( wantCol , haveCol )
61+ diff := getUnifiedDiff ( edits , wantCol , haveCol )
4362 if diff != "" {
4463 sb .WriteString (have .Schema ().Field (i ).Name )
4564 sb .WriteString (": " )
0 commit comments