Skip to content

Commit

Permalink
Reorder switch statements
Browse files Browse the repository at this point in the history
  • Loading branch information
Giorgi committed Oct 25, 2024
1 parent abdb923 commit 9e14d36
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
34 changes: 22 additions & 12 deletions DuckDB.NET.Data/Internal/ClrToDuckDBConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,36 @@ public static DuckDBValue ToDuckDBValue(this object value) =>
value switch
{
bool val => NativeMethods.Value.DuckDBCreateBool(val),

sbyte val => NativeMethods.Value.DuckDBCreateInt8(val),
short val => NativeMethods.Value.DuckDBCreateInt16(val),
int val => NativeMethods.Value.DuckDBCreateInt32(val),
long val => NativeMethods.Value.DuckDBCreateInt64(val),

byte val => NativeMethods.Value.DuckDBCreateUInt8(val),
ushort val => NativeMethods.Value.DuckDBCreateUInt16(val),
uint val => NativeMethods.Value.DuckDBCreateUInt32(val),
long val => NativeMethods.Value.DuckDBCreateInt64(val),
ulong val => NativeMethods.Value.DuckDBCreateUInt64(val),

float val => NativeMethods.Value.DuckDBCreateFloat(val),
double val => NativeMethods.Value.DuckDBCreateDouble(val),
string val => StringToDuckDBValue(val),

decimal val => DecimalToDuckDBValue(val),
Guid val => GuidToDuckDBValue(val),
BigInteger val => NativeMethods.Value.DuckDBCreateHugeInt(new DuckDBHugeInt(val)),
byte[] val => NativeMethods.Value.DuckDBCreateBlob(val, val.Length),
TimeSpan val => NativeMethods.Value.DuckDBCreateInterval(val),

string val => StringToDuckDBValue(val),
Guid val => GuidToDuckDBValue(val),
DateTime val => NativeMethods.Value.DuckDBCreateTimestamp(NativeMethods.DateTimeHelpers.DuckDBToTimestamp(DuckDBTimestamp.FromDateTime(val))),
DateTimeOffset val => DateTimeOffsetToDuckDBValue(val),
TimeSpan val => NativeMethods.Value.DuckDBCreateInterval(val),
DuckDBDateOnly val => NativeMethods.Value.DuckDBCreateDate(NativeMethods.DateTimeHelpers.DuckDBToDate(val)),
DuckDBTimeOnly val => NativeMethods.Value.DuckDBCreateTime(NativeMethods.DateTimeHelpers.DuckDBToTime(val)),
#if NET6_0_OR_GREATER
DateOnly val => NativeMethods.Value.DuckDBCreateDate(NativeMethods.DateTimeHelpers.DuckDBToDate(val)),
TimeOnly val => NativeMethods.Value.DuckDBCreateTime(NativeMethods.DateTimeHelpers.DuckDBToTime(val)),
#endif
DateTimeOffset val => DateTimeOffsetToDuckDBValue(val),
byte[] val => NativeMethods.Value.DuckDBCreateBlob(val, val.Length),

ICollection val => CreateCollectionValue(val),
_ => throw new InvalidCastException($"Cannot convert value of type {value.GetType().FullName} to DuckDBValue.")
};
Expand Down Expand Up @@ -73,28 +79,32 @@ private static DuckDBValue CreateCollectionValue(ICollection collection)
ICollection<bool> items => CreateCollectionValue(DuckDBType.Boolean, items),

ICollection<sbyte> items => CreateCollectionValue(DuckDBType.TinyInt, items),
ICollection<byte> items => CreateCollectionValue(DuckDBType.UnsignedTinyInt, items),
ICollection<short> items => CreateCollectionValue(DuckDBType.SmallInt, items),
ICollection<ushort> items => CreateCollectionValue(DuckDBType.UnsignedSmallInt, items),
ICollection<int> items => CreateCollectionValue(DuckDBType.Integer, items),
ICollection<uint> items => CreateCollectionValue(DuckDBType.UnsignedInteger, items),
ICollection<long> items => CreateCollectionValue(DuckDBType.BigInt, items),

ICollection<byte> items => CreateCollectionValue(DuckDBType.UnsignedTinyInt, items),
ICollection<ushort> items => CreateCollectionValue(DuckDBType.UnsignedSmallInt, items),
ICollection<uint> items => CreateCollectionValue(DuckDBType.UnsignedInteger, items),
ICollection<ulong> items => CreateCollectionValue(DuckDBType.UnsignedBigInt, items),

ICollection<float> items => CreateCollectionValue(DuckDBType.Float, items),
ICollection<double> items => CreateCollectionValue(DuckDBType.Double, items),
ICollection<BigInteger> items => CreateCollectionValue(DuckDBType.HugeInt, items),

ICollection<decimal> items => CreateCollectionValue(DuckDBType.Varchar, items),
ICollection<Guid> items => CreateCollectionValue(DuckDBType.Varchar, items),
ICollection<BigInteger> items => CreateCollectionValue(DuckDBType.HugeInt, items),

ICollection<string> items => CreateCollectionValue(DuckDBType.Varchar, items),
ICollection<Guid> items => CreateCollectionValue(DuckDBType.Varchar, items),
ICollection<DateTime> items => CreateCollectionValue(DuckDBType.Date, items),
ICollection<DateTimeOffset> items => CreateCollectionValue(DuckDBType.TimeTz, items),
ICollection<TimeSpan> items => CreateCollectionValue(DuckDBType.Interval, items),
ICollection<DuckDBDateOnly> items => CreateCollectionValue(DuckDBType.Date, items),
ICollection<DuckDBTimeOnly> items => CreateCollectionValue(DuckDBType.Time, items),
#if NET6_0_OR_GREATER
ICollection<DateOnly> items => CreateCollectionValue(DuckDBType.Date, items),
ICollection<TimeOnly> items => CreateCollectionValue(DuckDBType.Time, items),
#endif
ICollection<DateTimeOffset> items => CreateCollectionValue(DuckDBType.TimeTz, items),
_ => throw new InvalidOperationException($"Cannot convert collection type {collection.GetType().FullName} to DuckDBValue.")
};
}
Expand Down
2 changes: 2 additions & 0 deletions DuckDB.NET.Data/Internal/Writer/VectorDataWriterBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@ public void WriteValue<T>(T value, ulong rowIndex)
short val => AppendNumeric(val, rowIndex),
int val => AppendNumeric(val, rowIndex),
long val => AppendNumeric(val, rowIndex),

byte val => AppendNumeric(val, rowIndex),
ushort val => AppendNumeric(val, rowIndex),
uint val => AppendNumeric(val, rowIndex),
ulong val => AppendNumeric(val, rowIndex),

float val => AppendNumeric(val, rowIndex),
double val => AppendNumeric(val, rowIndex),

Expand Down

0 comments on commit 9e14d36

Please sign in to comment.