Skip to content

Commit

Permalink
Change ulong to int in vector writer
Browse files Browse the repository at this point in the history
  • Loading branch information
Giorgi committed May 7, 2024
1 parent 69e7119 commit 4a76c9c
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 34 deletions.
4 changes: 2 additions & 2 deletions DuckDB.NET.Data/DuckDBAppenderRow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ public class DuckDBAppenderRow
private int columnIndex = 0;
private readonly string qualifiedTableName;
private readonly VectorDataWriterBase[] vectorWriters;
private readonly ulong rowIndex;
private readonly int rowIndex;

internal DuckDBAppenderRow(string qualifiedTableName, VectorDataWriterBase[] vectorWriters, ulong rowIndex)
{
this.qualifiedTableName = qualifiedTableName;
this.vectorWriters = vectorWriters;
this.rowIndex = rowIndex;
this.rowIndex = (int)rowIndex;
}

public void EndRow()
Expand Down
2 changes: 1 addition & 1 deletion DuckDB.NET.Data/Internal/Writer/BooleanVectorDataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ namespace DuckDB.NET.Data.Internal.Writer;

internal sealed unsafe class BooleanVectorDataWriter(IntPtr vector, void* vectorData, DuckDBType columnType) : VectorDataWriterBase(vector, vectorData, columnType)
{
internal override bool AppendBool(bool value, ulong rowIndex) => AppendValueInternal(value, rowIndex);
internal override bool AppendBool(bool value, int rowIndex) => AppendValueInternal(value, rowIndex);
}
10 changes: 5 additions & 5 deletions DuckDB.NET.Data/Internal/Writer/DateTimeVectorDataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ namespace DuckDB.NET.Data.Internal.Writer;

internal sealed unsafe class DateTimeVectorDataWriter(IntPtr vector, void* vectorData, DuckDBType columnType) : VectorDataWriterBase(vector, vectorData, columnType)
{
internal override bool AppendDateTime(DateTime value, ulong rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToTimestamp(DuckDBTimestamp.FromDateTime(value)), rowIndex);
internal override bool AppendDateTime(DateTime value, int rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToTimestamp(DuckDBTimestamp.FromDateTime(value)), rowIndex);

#if NET6_0_OR_GREATER
internal override bool AppendDateOnly(DateOnly value, ulong rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToDate(value), rowIndex);
internal override bool AppendDateOnly(DateOnly value, int rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToDate(value), rowIndex);

internal override bool AppendTimeOnly(TimeOnly value, ulong rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToTime(value), rowIndex);
internal override bool AppendTimeOnly(TimeOnly value, int rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToTime(value), rowIndex);
#endif

internal override bool AppendDateOnly(DuckDBDateOnly value, ulong rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToDate(value), rowIndex);
internal override bool AppendDateOnly(DuckDBDateOnly value, int rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToDate(value), rowIndex);

internal override bool AppendTimeOnly(DuckDBTimeOnly value, ulong rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToTime(value), rowIndex);
internal override bool AppendTimeOnly(DuckDBTimeOnly value, int rowIndex) => AppendValueInternal(NativeMethods.DateTimeHelpers.DuckDBToTime(value), rowIndex);
}
2 changes: 1 addition & 1 deletion DuckDB.NET.Data/Internal/Writer/DecimalVectorDataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal sealed unsafe class DecimalVectorDataWriter(IntPtr vector, void* vector
private readonly byte scale = NativeMethods.LogicalType.DuckDBDecimalScale(logicalType);
private readonly DuckDBType decimalType = NativeMethods.LogicalType.DuckDBDecimalInternalType(logicalType);

internal override bool AppendDecimal(decimal value, ulong rowIndex)
internal override bool AppendDecimal(decimal value, int rowIndex)
{
var power = Math.Pow(10, scale);

Expand Down
2 changes: 1 addition & 1 deletion DuckDB.NET.Data/Internal/Writer/GuidVectorDataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ namespace DuckDB.NET.Data.Internal.Writer;

internal sealed unsafe class GuidVectorDataWriter(IntPtr vector, void* vectorData, DuckDBType columnType) : VectorDataWriterBase(vector, vectorData, columnType)
{
internal override bool AppendGuid(Guid value, ulong rowIndex) => AppendValueInternal(value.ToHugeInt(), rowIndex);
internal override bool AppendGuid(Guid value, int rowIndex) => AppendValueInternal(value.ToHugeInt(), rowIndex);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ namespace DuckDB.NET.Data.Internal.Writer;

internal sealed unsafe class IntervalVectorDataWriter(IntPtr vector, void* vectorData, DuckDBType columnType) : VectorDataWriterBase(vector, vectorData, columnType)
{
internal override bool AppendTimeSpan(TimeSpan value, ulong rowIndex) => AppendValueInternal((DuckDBInterval)value, rowIndex);
internal override bool AppendTimeSpan(TimeSpan value, int rowIndex) => AppendValueInternal((DuckDBInterval)value, rowIndex);
}
4 changes: 2 additions & 2 deletions DuckDB.NET.Data/Internal/Writer/NumericVectorDataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace DuckDB.NET.Data.Internal.Writer;

internal sealed unsafe class NumericVectorDataWriter(IntPtr vector, void* vectorData, DuckDBType columnType) : VectorDataWriterBase(vector, vectorData, columnType)
{
internal override bool AppendNumeric<T>(T value, ulong rowIndex) => AppendValueInternal(value, rowIndex);
internal override bool AppendNumeric<T>(T value, int rowIndex) => AppendValueInternal(value, rowIndex);

internal override bool AppendBigInteger(BigInteger value, ulong rowIndex) => AppendValueInternal<DuckDBHugeInt>(new DuckDBHugeInt(value), rowIndex);
internal override bool AppendBigInteger(BigInteger value, int rowIndex) => AppendValueInternal<DuckDBHugeInt>(new DuckDBHugeInt(value), rowIndex);
}
8 changes: 4 additions & 4 deletions DuckDB.NET.Data/Internal/Writer/StringVectorDataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ namespace DuckDB.NET.Data.Internal.Writer;

internal sealed unsafe class StringVectorDataWriter(IntPtr vector, void* vectorData, DuckDBType columnType) : VectorDataWriterBase(vector, vectorData, columnType)
{
internal override bool AppendString(string value, ulong rowIndex)
internal override bool AppendString(string value, int rowIndex)
{
using var unmanagedString = value.ToUnmanagedString();
NativeMethods.Vectors.DuckDBVectorAssignStringElement(base.Vector, rowIndex, unmanagedString);
NativeMethods.Vectors.DuckDBVectorAssignStringElement(base.Vector, (ulong)rowIndex, unmanagedString);
return true;
}

internal override bool AppendBlob(byte* value, int length, ulong rowIndex)
internal override bool AppendBlob(byte* value, int length, int rowIndex)
{
NativeMethods.Vectors.DuckDBVectorAssignStringElementLength(Vector, rowIndex, value, length);
NativeMethods.Vectors.DuckDBVectorAssignStringElementLength(Vector, (ulong)rowIndex, value, length);
return true;
}
}
34 changes: 17 additions & 17 deletions DuckDB.NET.Data/Internal/Writer/VectorDataWriterBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ internal unsafe class VectorDataWriterBase(IntPtr vector, void* vectorData, Duck
private unsafe ulong* validity;
internal IntPtr Vector { get; } = vector;

public unsafe void AppendNull(ulong rowIndex)
public unsafe void AppendNull(int rowIndex)
{
if (validity == default)
{
NativeMethods.Vectors.DuckDBVectorEnsureValidityWritable(Vector);
validity = NativeMethods.Vectors.DuckDBVectorGetValidity(Vector);
}

NativeMethods.ValidityMask.DuckDBValiditySetRowValidity(validity, rowIndex, false);
NativeMethods.ValidityMask.DuckDBValiditySetRowValidity(validity, (ulong)rowIndex, false);
}

public unsafe void AppendValue<T>(T value, ulong rowIndex)
public unsafe void AppendValue<T>(T value, int rowIndex)
{
if (value == null)
{
Expand Down Expand Up @@ -60,40 +60,40 @@ public unsafe void AppendValue<T>(T value, ulong rowIndex)
};
}

internal virtual bool AppendBool(bool value, ulong rowIndex) => ThrowException<bool>();
internal virtual bool AppendBool(bool value, int rowIndex) => ThrowException<bool>();

internal virtual bool AppendDecimal(decimal value, ulong rowIndex) => ThrowException<decimal>();
internal virtual bool AppendDecimal(decimal value, int rowIndex) => ThrowException<decimal>();

internal virtual bool AppendTimeSpan(TimeSpan value, ulong rowIndex) => ThrowException<TimeSpan>();
internal virtual bool AppendTimeSpan(TimeSpan value, int rowIndex) => ThrowException<TimeSpan>();

internal virtual bool AppendGuid(Guid value, ulong rowIndex) => ThrowException<Guid>();
internal virtual bool AppendGuid(Guid value, int rowIndex) => ThrowException<Guid>();

internal virtual bool AppendBlob(byte* value, int length, ulong rowIndex) => ThrowException<byte[]>();
internal virtual bool AppendBlob(byte* value, int length, int rowIndex) => ThrowException<byte[]>();

internal virtual bool AppendString(string value, ulong rowIndex) => ThrowException<string>();
internal virtual bool AppendString(string value, int rowIndex) => ThrowException<string>();

internal virtual bool AppendDateTime(DateTime value, ulong rowIndex) => ThrowException<DateTime>();
internal virtual bool AppendDateTime(DateTime value, int rowIndex) => ThrowException<DateTime>();

#if NET6_0_OR_GREATER
internal virtual bool AppendDateOnly(DateOnly value, ulong rowIndex) => ThrowException<DateOnly>();
internal virtual bool AppendDateOnly(DateOnly value, int rowIndex) => ThrowException<DateOnly>();

internal virtual bool AppendTimeOnly(TimeOnly value, ulong rowIndex) => ThrowException<TimeOnly>();
internal virtual bool AppendTimeOnly(TimeOnly value, int rowIndex) => ThrowException<TimeOnly>();
#endif

internal virtual bool AppendDateOnly(DuckDBDateOnly value, ulong rowIndex) => ThrowException<DuckDBDateOnly>();
internal virtual bool AppendDateOnly(DuckDBDateOnly value, int rowIndex) => ThrowException<DuckDBDateOnly>();

internal virtual bool AppendTimeOnly(DuckDBTimeOnly value, ulong rowIndex) => ThrowException<DuckDBTimeOnly>();
internal virtual bool AppendTimeOnly(DuckDBTimeOnly value, int rowIndex) => ThrowException<DuckDBTimeOnly>();

internal virtual bool AppendNumeric<T>(T value, ulong rowIndex) where T : unmanaged => ThrowException<T>();
internal virtual bool AppendNumeric<T>(T value, int rowIndex) where T : unmanaged => ThrowException<T>();

internal virtual bool AppendBigInteger(BigInteger value, ulong rowIndex) => ThrowException<BigInteger>();
internal virtual bool AppendBigInteger(BigInteger value, int rowIndex) => ThrowException<BigInteger>();

private bool ThrowException<T>()
{
throw new InvalidOperationException($"Cannot write {typeof(T).Name} to {columnType} column");
}

internal unsafe bool AppendValueInternal<T>(T value, ulong rowIndex) where T : unmanaged
internal unsafe bool AppendValueInternal<T>(T value, int rowIndex) where T : unmanaged
{
((T*)vectorData)[rowIndex] = value;
return true;
Expand Down

0 comments on commit 4a76c9c

Please sign in to comment.