From 4a76c9c8ba89a94b40d2e05e4e9f9e1b42e32cd5 Mon Sep 17 00:00:00 2001 From: Giorgi Date: Wed, 8 May 2024 01:56:09 +0400 Subject: [PATCH] Change ulong to int in vector writer --- DuckDB.NET.Data/DuckDBAppenderRow.cs | 4 +-- .../Writer/BooleanVectorDataWriter.cs | 2 +- .../Writer/DateTimeVectorDataWriter.cs | 10 +++--- .../Writer/DecimalVectorDataWriter.cs | 2 +- .../Internal/Writer/GuidVectorDataWriter.cs | 2 +- .../Writer/IntervalVectorDataWriter.cs | 2 +- .../Writer/NumericVectorDataWriter.cs | 4 +-- .../Internal/Writer/StringVectorDataWriter.cs | 8 ++--- .../Internal/Writer/VectorDataWriterBase.cs | 34 +++++++++---------- 9 files changed, 34 insertions(+), 34 deletions(-) diff --git a/DuckDB.NET.Data/DuckDBAppenderRow.cs b/DuckDB.NET.Data/DuckDBAppenderRow.cs index 4a5106c..4f23b50 100644 --- a/DuckDB.NET.Data/DuckDBAppenderRow.cs +++ b/DuckDB.NET.Data/DuckDBAppenderRow.cs @@ -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() diff --git a/DuckDB.NET.Data/Internal/Writer/BooleanVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/BooleanVectorDataWriter.cs index 775bc82..7773804 100644 --- a/DuckDB.NET.Data/Internal/Writer/BooleanVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/BooleanVectorDataWriter.cs @@ -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); } diff --git a/DuckDB.NET.Data/Internal/Writer/DateTimeVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/DateTimeVectorDataWriter.cs index 7442a7d..28bc4df 100644 --- a/DuckDB.NET.Data/Internal/Writer/DateTimeVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/DateTimeVectorDataWriter.cs @@ -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); } diff --git a/DuckDB.NET.Data/Internal/Writer/DecimalVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/DecimalVectorDataWriter.cs index 3dc0dab..92dc99e 100644 --- a/DuckDB.NET.Data/Internal/Writer/DecimalVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/DecimalVectorDataWriter.cs @@ -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); diff --git a/DuckDB.NET.Data/Internal/Writer/GuidVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/GuidVectorDataWriter.cs index 7248634..bec9ed7 100644 --- a/DuckDB.NET.Data/Internal/Writer/GuidVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/GuidVectorDataWriter.cs @@ -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); } \ No newline at end of file diff --git a/DuckDB.NET.Data/Internal/Writer/IntervalVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/IntervalVectorDataWriter.cs index cef853f..ea1ee37 100644 --- a/DuckDB.NET.Data/Internal/Writer/IntervalVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/IntervalVectorDataWriter.cs @@ -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); } diff --git a/DuckDB.NET.Data/Internal/Writer/NumericVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/NumericVectorDataWriter.cs index 8d1dfbf..b307c70 100644 --- a/DuckDB.NET.Data/Internal/Writer/NumericVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/NumericVectorDataWriter.cs @@ -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 value, ulong rowIndex) => AppendValueInternal(value, rowIndex); + internal override bool AppendNumeric(T value, int rowIndex) => AppendValueInternal(value, rowIndex); - internal override bool AppendBigInteger(BigInteger value, ulong rowIndex) => AppendValueInternal(new DuckDBHugeInt(value), rowIndex); + internal override bool AppendBigInteger(BigInteger value, int rowIndex) => AppendValueInternal(new DuckDBHugeInt(value), rowIndex); } diff --git a/DuckDB.NET.Data/Internal/Writer/StringVectorDataWriter.cs b/DuckDB.NET.Data/Internal/Writer/StringVectorDataWriter.cs index 8d61f3f..b40921f 100644 --- a/DuckDB.NET.Data/Internal/Writer/StringVectorDataWriter.cs +++ b/DuckDB.NET.Data/Internal/Writer/StringVectorDataWriter.cs @@ -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; } } diff --git a/DuckDB.NET.Data/Internal/Writer/VectorDataWriterBase.cs b/DuckDB.NET.Data/Internal/Writer/VectorDataWriterBase.cs index 3af371e..c3f45e6 100644 --- a/DuckDB.NET.Data/Internal/Writer/VectorDataWriterBase.cs +++ b/DuckDB.NET.Data/Internal/Writer/VectorDataWriterBase.cs @@ -9,7 +9,7 @@ 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) { @@ -17,10 +17,10 @@ public unsafe void AppendNull(ulong rowIndex) validity = NativeMethods.Vectors.DuckDBVectorGetValidity(Vector); } - NativeMethods.ValidityMask.DuckDBValiditySetRowValidity(validity, rowIndex, false); + NativeMethods.ValidityMask.DuckDBValiditySetRowValidity(validity, (ulong)rowIndex, false); } - public unsafe void AppendValue(T value, ulong rowIndex) + public unsafe void AppendValue(T value, int rowIndex) { if (value == null) { @@ -60,40 +60,40 @@ public unsafe void AppendValue(T value, ulong rowIndex) }; } - internal virtual bool AppendBool(bool value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendBool(bool value, int rowIndex) => ThrowException(); - internal virtual bool AppendDecimal(decimal value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendDecimal(decimal value, int rowIndex) => ThrowException(); - internal virtual bool AppendTimeSpan(TimeSpan value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendTimeSpan(TimeSpan value, int rowIndex) => ThrowException(); - internal virtual bool AppendGuid(Guid value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendGuid(Guid value, int rowIndex) => ThrowException(); - internal virtual bool AppendBlob(byte* value, int length, ulong rowIndex) => ThrowException(); + internal virtual bool AppendBlob(byte* value, int length, int rowIndex) => ThrowException(); - internal virtual bool AppendString(string value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendString(string value, int rowIndex) => ThrowException(); - internal virtual bool AppendDateTime(DateTime value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendDateTime(DateTime value, int rowIndex) => ThrowException(); #if NET6_0_OR_GREATER - internal virtual bool AppendDateOnly(DateOnly value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendDateOnly(DateOnly value, int rowIndex) => ThrowException(); - internal virtual bool AppendTimeOnly(TimeOnly value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendTimeOnly(TimeOnly value, int rowIndex) => ThrowException(); #endif - internal virtual bool AppendDateOnly(DuckDBDateOnly value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendDateOnly(DuckDBDateOnly value, int rowIndex) => ThrowException(); - internal virtual bool AppendTimeOnly(DuckDBTimeOnly value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendTimeOnly(DuckDBTimeOnly value, int rowIndex) => ThrowException(); - internal virtual bool AppendNumeric(T value, ulong rowIndex) where T : unmanaged => ThrowException(); + internal virtual bool AppendNumeric(T value, int rowIndex) where T : unmanaged => ThrowException(); - internal virtual bool AppendBigInteger(BigInteger value, ulong rowIndex) => ThrowException(); + internal virtual bool AppendBigInteger(BigInteger value, int rowIndex) => ThrowException(); private bool ThrowException() { throw new InvalidOperationException($"Cannot write {typeof(T).Name} to {columnType} column"); } - internal unsafe bool AppendValueInternal(T value, ulong rowIndex) where T : unmanaged + internal unsafe bool AppendValueInternal(T value, int rowIndex) where T : unmanaged { ((T*)vectorData)[rowIndex] = value; return true;