• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Giorgi / DuckDB.NET / 21786556530

07 Feb 2026 08:39PM UTC coverage: 89.155% (-0.07%) from 89.223%
21786556530

push

github

Giorgi
Added support for clearing in-progress adapter

Requires DuckDB 1.5

1199 of 1393 branches covered (86.07%)

Branch coverage included in aggregate %.

6 of 8 new or added lines in 1 file covered. (75.0%)

193 existing lines in 43 files now uncovered.

2336 of 2572 relevant lines covered (90.82%)

557295.56 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.82
/DuckDB.NET.Data/DataChunk/Writer/VectorDataWriterBase.cs
1
namespace DuckDB.NET.Data.DataChunk.Writer;
2

3
internal unsafe class VectorDataWriterBase(IntPtr vector, void* vectorData, DuckDBType columnType) : IDisposable, IDuckDBDataWriter
1,356✔
4
{
5
    private ulong* validity;
6

7
    internal IntPtr Vector => vector;
850,386✔
8
    internal DuckDBType ColumnType => columnType;
3,896,324✔
9

10
    public void WriteNull(ulong rowIndex)
11
    {
12
        if (validity == default)
5,235,573✔
13
        {
14
            NativeMethods.Vectors.DuckDBVectorEnsureValidityWritable(Vector);
765✔
15
            validity = NativeMethods.Vectors.DuckDBVectorGetValidity(Vector);
765✔
16
        }
17

18
        NativeMethods.ValidityMask.DuckDBValiditySetRowValidity(validity, rowIndex, false);
5,235,573✔
19
    }
5,235,573✔
20

21
    public void WriteValue<T>(T value, ulong rowIndex)
22
    {
23
        if (value == null)
26,781,568✔
24
        {
25
            WriteNull(rowIndex);
5,235,573✔
26
            return;
5,235,573✔
27
        }
28

29
        _ = value switch
21,545,995!
30
        {
21,545,995✔
31
            bool val => AppendBool(val, rowIndex),
1,121,223✔
32

21,545,995✔
33
            sbyte val => AppendNumeric(val, rowIndex),
1,200,341✔
34
            short val => AppendNumeric(val, rowIndex),
1,123,284✔
35
            int val => AppendNumeric(val, rowIndex),
1,626,811✔
36
            long val => AppendNumeric(val, rowIndex),
1,247,188✔
37

21,545,995✔
38
            byte val => AppendNumeric(val, rowIndex),
1,117,604✔
39
            ushort val => AppendNumeric(val, rowIndex),
1,116,345✔
40
            uint val => AppendNumeric(val, rowIndex),
1,128,570✔
41
            ulong val => AppendNumeric(val, rowIndex),
1,134,576✔
42

21,545,995✔
43
            float val => AppendNumeric(val, rowIndex),
1,131,963✔
44
            double val => AppendNumeric(val, rowIndex),
1,119,572✔
45

21,545,995✔
46
            decimal val => AppendDecimal(val, rowIndex),
1,180,886✔
47
            BigInteger val => AppendBigInteger(val, rowIndex),
1,489,710✔
48

21,545,995✔
49
            Enum val => AppendEnum(val, rowIndex),
564,407✔
50

21,545,995✔
51
            string val => AppendString(val, rowIndex),
1,405,375✔
52
            Guid val => AppendGuid(val, rowIndex),
1,287,196✔
53
            DateTime val => AppendDateTime(val, rowIndex),
759,200✔
54
            TimeSpan val => AppendTimeSpan(val, rowIndex),
751,297✔
55
            DuckDBDateOnly val => AppendDateOnly(val, rowIndex),
120✔
56
            DuckDBTimeOnly val => AppendTimeOnly(val, rowIndex),
60✔
UNCOV
57
            DateOnly val => AppendDateOnly(val, rowIndex),
×
UNCOV
58
            TimeOnly val => AppendTimeOnly(val, rowIndex),
×
59
            DateTimeOffset val => AppendDateTimeOffset(val, rowIndex),
120✔
60
            ICollection val => AppendCollection(val, rowIndex),
1,040,147✔
UNCOV
61
            _ => ThrowException<T>()
×
62
        };
21,545,995✔
63
    }
×
64

UNCOV
65
    internal virtual bool AppendBool(bool value, ulong rowIndex) => ThrowException<bool>();
×
66

UNCOV
67
    internal virtual bool AppendDecimal(decimal value, ulong rowIndex) => ThrowException<decimal>();
×
68

UNCOV
69
    internal virtual bool AppendTimeSpan(TimeSpan value, ulong rowIndex) => ThrowException<TimeSpan>();
×
70

UNCOV
71
    internal virtual bool AppendGuid(Guid value, ulong rowIndex) => ThrowException<Guid>();
×
72

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

UNCOV
75
    internal virtual bool AppendString(string value, ulong rowIndex) => ThrowException<string>();
×
76

UNCOV
77
    internal virtual bool AppendDateTime(DateTime value, ulong rowIndex) => ThrowException<DateTime>();
×
78

UNCOV
79
    internal virtual bool AppendDateOnly(DateOnly value, ulong rowIndex) => ThrowException<DateOnly>();
×
80

UNCOV
81
    internal virtual bool AppendTimeOnly(TimeOnly value, ulong rowIndex) => ThrowException<TimeOnly>();
×
82

UNCOV
83
    internal virtual bool AppendDateOnly(DuckDBDateOnly value, ulong rowIndex) => ThrowException<DuckDBDateOnly>();
×
84

UNCOV
85
    internal virtual bool AppendTimeOnly(DuckDBTimeOnly value, ulong rowIndex) => ThrowException<DuckDBTimeOnly>();
×
86

UNCOV
87
    internal virtual bool AppendDateTimeOffset(DateTimeOffset value, ulong rowIndex) => ThrowException<DateTimeOffset>();
×
88

89
    internal virtual bool AppendNumeric<T>(T value, ulong rowIndex) where T : unmanaged => ThrowException<T>();
3✔
90

UNCOV
91
    internal virtual bool AppendBigInteger(BigInteger value, ulong rowIndex) => ThrowException<BigInteger>();
×
92

UNCOV
93
    internal virtual bool AppendEnum<TEnum>(TEnum value, ulong rowIndex) where TEnum : Enum => ThrowException<TEnum>();
×
94

UNCOV
95
    internal virtual bool AppendCollection(ICollection value, ulong rowIndex) => ThrowException<ICollection>();
×
96

97
    private bool ThrowException<T>()
98
    {
99
        throw new InvalidOperationException($"Cannot write {typeof(T).Name} to {columnType} column");
3✔
100
    }
101

102
    internal bool AppendValueInternal<T>(T value, ulong rowIndex) where T : unmanaged
103
    {
104
        ((T*)vectorData)[rowIndex] = value;
20,694,502✔
105
        return true;
20,694,502✔
106
    }
107

108
    internal void InitializeWriter()
109
    {
110
        validity = default;
1,686✔
111
        vectorData = NativeMethods.Vectors.DuckDBVectorGetData(Vector);
1,686✔
112
    }
1,686✔
113

114
    public virtual void Dispose()
115
    {
116

117
    }
834✔
118
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc