Skip to content

Commit 038cb83

Browse files
authored
Add better exceptions for dotnet type converter (#809)
1 parent 5a68ae2 commit 038cb83

19 files changed

+28
-19
lines changed

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/BatchConverter.cs

+10-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,16 @@ public object ConvertToDotNetObject(IReadOnlyList<IColumn> columns, int index)
237237
for (int i = 0; i < properties.Count; i++)
238238
{
239239
var property = properties[i];
240-
var value = converters[i].Deserialize(columns[i].GetValueAt(index, default));
240+
object? value = default;
241+
try
242+
{
243+
value = converters[i].Deserialize(columns[i].GetValueAt(index, default));
244+
}
245+
catch(Exception e)
246+
{
247+
throw new InvalidOperationException($"Could not deserialize property {property.Name}, Check inner exception for type details", e);
248+
}
249+
241250

242251
if (property.SetFunc == null)
243252
{

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/ArrayConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public object Deserialize<T>(T value) where T : IDataValue
5353
}
5454
else
5555
{
56-
throw new NotImplementedException();
56+
throw new NotImplementedException($"Can not deserialize {value.Type} to array");
5757
}
5858
}
5959

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/BoolConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2828
{
2929
return value.AsBool;
3030
}
31-
throw new NotImplementedException();
31+
throw new NotImplementedException($"Can not deserialize {value.Type} to string");
3232
}
3333

3434
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/ByteArrayConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2727
{
2828
return value.AsBinary.ToArray();
2929
}
30-
throw new NotImplementedException();
30+
throw new NotImplementedException($"Can not deserialize {value.Type} to byte array");
3131
}
3232

3333
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/DateTimeConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public object Deserialize<T>(T value) where T : IDataValue
3535
return timestamp.ToDateTimeOffset().DateTime;
3636
}
3737

38-
throw new NotImplementedException();
38+
throw new NotImplementedException($"Can not deserialize {value.Type} to datetime");
3939
}
4040

4141
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/DateTimeOffsetConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2828
{
2929
return value.AsTimestamp.ToDateTimeOffset();
3030
}
31-
throw new NotImplementedException();
31+
throw new NotImplementedException($"Can not deserialize {value.Type} to datetimeoffset");
3232
}
3333

3434
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/DecimalConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2929
return value.AsDecimal;
3030
}
3131

32-
throw new NotImplementedException();
32+
throw new NotImplementedException($"Can not deserialize {value.Type} to decimal");
3333
}
3434

3535
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/DictionaryConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public object Deserialize<T>(T value) where T : IDataValue
6565
return dictionary;
6666
}
6767

68-
throw new NotImplementedException();
68+
throw new NotImplementedException($"Can not deserialize {value.Type} to dictionary");
6969
}
7070

7171
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/DoubleConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2828
{
2929
return value.AsDouble;
3030
}
31-
throw new NotImplementedException();
31+
throw new NotImplementedException($"Can not deserialize {value.Type} to double");
3232
}
3333

3434
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/EnumConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public object Deserialize<T>(T value) where T : IDataValue
3030
{
3131
return Enum.ToObject(enumType, value.AsLong);
3232
}
33-
throw new NotImplementedException();
33+
throw new NotImplementedException($"Can not deserialize {value.Type} to enum");
3434
}
3535

3636
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/EnumStringConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public object Deserialize<T>(T value) where T : IDataValue
3131
{
3232
return Enum.Parse(enumType, value.AsString.ToString());
3333
}
34-
throw new NotImplementedException();
34+
throw new NotImplementedException($"Can not deserialize {value.Type} to enum");
3535
}
3636

3737
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/FloatConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2929
return (float)value.AsDouble;
3030
}
3131

32-
throw new NotImplementedException();
32+
throw new NotImplementedException($"Can not deserialize {value.Type} to float");
3333
}
3434

3535
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/Int64Converter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public object Deserialize<T>(T value) where T : IDataValue
4242
}
4343
else
4444
{
45-
throw new NotImplementedException();
45+
throw new NotImplementedException($"Can not deserialize {value.Type} to int64");
4646
}
4747

4848
}

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/ListConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public object Deserialize<T>(T value) where T : IDataValue
4848
}
4949
else
5050
{
51-
throw new NotImplementedException();
51+
throw new NotImplementedException($"Can not deserialize {value.Type} to list");
5252
}
5353
}
5454

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/MemoryByteConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2828
{
2929
return new Memory<byte>(value.AsBinary.ToArray());
3030
}
31-
throw new NotImplementedException();
31+
throw new NotImplementedException($"Can not deserialize {value.Type} to Memory<byte>");
3232
}
3333

3434
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/ObjectConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public object Deserialize<T>(T value) where T : IDataValue
9595
}
9696
else
9797
{
98-
throw new NotImplementedException();
98+
throw new NotImplementedException($"Can not deserialize {value.Type} to generic object");
9999
}
100100
}
101101

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/ReadOnlyMemoryConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2929
return new ReadOnlyMemory<byte>(value.AsBinary.ToArray());
3030
}
3131

32-
throw new NotImplementedException();
32+
throw new NotImplementedException($"Can not deserialize {value.Type} to ReadOnlyMemory");
3333
}
3434

3535
public SubstraitBaseType GetSubstraitType()

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/StringConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public object Deserialize<T>(T value) where T : IDataValue
2929
}
3030
else
3131
{
32-
throw new NotImplementedException();
32+
throw new NotImplementedException($"Can not deserialize {value.Type} to string");
3333
}
3434
}
3535

src/FlowtideDotNet.Core/ColumnStore/ObjectConverter/Converters/UnionConverter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public object Deserialize<T>(T value) where T : IDataValue
6868
case ArrowTypeId.Struct:
6969
return GetConverter(typeof(Dictionary<string, object>)).Deserialize(value);
7070
default:
71-
throw new NotImplementedException();
71+
throw new NotImplementedException($"Can not deserialize {value.Type} to object");
7272
}
7373
}
7474

0 commit comments

Comments
 (0)