Skip to content

Commit 5c0f38f

Browse files
committed
Merge branch 'develop' into nightly-builds
2 parents 7ea9c1d + bb45776 commit 5c0f38f

File tree

5 files changed

+44
-35
lines changed

5 files changed

+44
-35
lines changed

DuckDB.NET.Data/DuckDBConnectionStringBuilder.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class DuckDBConnectionStringBuilder : DbConnectionStringBuilder
1919
public const string InMemorySharedConnectionString = "DataSource=:memory:?cache=shared";
2020

2121
private const string DataSourceKey = "DataSource";
22+
private const string DuckDBApiConfigKey = "duckdb_api";
2223

2324
static DuckDBConnectionStringBuilder()
2425
{
@@ -38,6 +39,11 @@ internal static DuckDBConnectionString Parse(string connectionString)
3839
ConnectionString = connectionString
3940
};
4041

42+
if (!builder.ContainsKey(DuckDBApiConfigKey))
43+
{
44+
builder[DuckDBApiConfigKey] = "DuckDB.NET";
45+
}
46+
4147
var dataSource = builder.DataSource;
4248

4349
var configurations = new Dictionary<string, string>();

DuckDB.NET.Data/DuckDBDataReader.cs

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -64,48 +64,45 @@ private bool InitNextReader()
6464

6565
private bool InitChunkData()
6666
{
67-
unsafe
67+
foreach (var reader in vectorReaders)
6868
{
69-
foreach (var reader in vectorReaders)
70-
{
71-
reader.Dispose();
72-
}
69+
reader.Dispose();
70+
}
7371

74-
currentChunk?.Dispose();
75-
currentChunk = streamingResult ? NativeMethods.StreamingResult.DuckDBStreamFetchChunk(currentResult) : NativeMethods.Types.DuckDBResultGetChunk(currentResult, currentChunkIndex);
72+
currentChunk?.Dispose();
73+
currentChunk = streamingResult ? NativeMethods.StreamingResult.DuckDBStreamFetchChunk(currentResult) : NativeMethods.Types.DuckDBResultGetChunk(currentResult, currentChunkIndex);
7674

77-
rowsReadFromCurrentChunk = 0;
75+
rowsReadFromCurrentChunk = 0;
7876

79-
currentChunkRowCount = NativeMethods.DataChunks.DuckDBDataChunkGetSize(currentChunk);
77+
currentChunkRowCount = NativeMethods.DataChunks.DuckDBDataChunkGetSize(currentChunk);
8078

81-
if (vectorReaders.Length != fieldCount)
82-
{
83-
vectorReaders = new VectorDataReaderBase[fieldCount];
84-
}
79+
if (vectorReaders.Length != fieldCount)
80+
{
81+
vectorReaders = new VectorDataReaderBase[fieldCount];
82+
}
8583

86-
for (int index = 0; index < fieldCount; index++)
87-
{
88-
var vector = NativeMethods.DataChunks.DuckDBDataChunkGetVector(currentChunk, index);
84+
for (int index = 0; index < fieldCount; index++)
85+
{
86+
var vector = NativeMethods.DataChunks.DuckDBDataChunkGetVector(currentChunk, index);
8987

90-
using var logicalType = NativeMethods.Query.DuckDBColumnLogicalType(ref currentResult, index);
88+
using var logicalType = NativeMethods.Query.DuckDBColumnLogicalType(ref currentResult, index);
9189

92-
vectorReaders[index] = VectorDataReaderFactory.CreateReader(vector, logicalType, vectorReaders[index]?.ColumnName ??
93-
NativeMethods.Query.DuckDBColumnName(ref currentResult, index).ToManagedString(false));
94-
}
90+
var columnName = vectorReaders[index]?.ColumnName ?? NativeMethods.Query.DuckDBColumnName(ref currentResult, index).ToManagedString(false);
91+
vectorReaders[index] = VectorDataReaderFactory.CreateReader(vector, logicalType, columnName);
92+
}
9593

96-
if (columnMapping.Count == 0)
94+
if (columnMapping.Count == 0)
95+
{
96+
for (var i = 0; i < vectorReaders.Length; i++)
9797
{
98-
for (var i = 0; i < vectorReaders.Length; i++)
98+
if (!columnMapping.ContainsKey(vectorReaders[i].ColumnName))
9999
{
100-
if (!columnMapping.ContainsKey(vectorReaders[i].ColumnName))
101-
{
102-
columnMapping.Add(vectorReaders[i].ColumnName, i);
103-
}
100+
columnMapping.Add(vectorReaders[i].ColumnName, i);
104101
}
105102
}
106-
107-
return currentChunkRowCount > 0;
108103
}
104+
105+
return currentChunkRowCount > 0;
109106
}
110107

111108
public override bool GetBoolean(int ordinal)

DuckDB.NET.Data/DuckDBDbType.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1 @@
11
namespace DuckDB.NET.Data;
2-
3-
public enum DuckDBDbType
4-
{
5-
List
6-
}

DuckDB.NET.Data/DuckDBParameter.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ public class DuckDBParameter : DbParameter
1414

1515
public override DbType DbType { get; set; }
1616

17-
public DuckDBDbType DuckDBType { get; set; }
18-
1917
#if NET6_0_OR_GREATER
2018
[AllowNull]
2119
#endif

DuckDB.NET.Test/DuckDBConnectionTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,4 +536,17 @@ void Assert(object sender, StateChangeEventArgs args)
536536
handlerCalled = true;
537537
}
538538
}
539+
540+
[Fact]
541+
public void ConnectionSetsDuckDBApiConfigOption()
542+
{
543+
using (var connection = new DuckDBConnection(DuckDBConnectionStringBuilder.InMemoryConnectionString))
544+
{
545+
connection.Open();
546+
using var command = connection.CreateCommand();
547+
command.CommandText = "SELECT current_setting('duckdb_api');";
548+
var value = command.ExecuteScalar();
549+
value.Should().Be("DuckDB.NET");
550+
}
551+
}
539552
}

0 commit comments

Comments
 (0)