From 4ee9e410e1730237af28da5863edd6e327e64ab1 Mon Sep 17 00:00:00 2001 From: Pavlo Iatsiuk Date: Sun, 17 Sep 2023 22:38:15 +0200 Subject: [PATCH] #120 Connection string DataSource key is case sensitive --- .../ConnectionString/DuckDBConnectionStringParser.cs | 7 ++++++- DuckDB.NET.Data/DuckDBConnectionStringBuilder.cs | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/DuckDB.NET.Data/ConnectionString/DuckDBConnectionStringParser.cs b/DuckDB.NET.Data/ConnectionString/DuckDBConnectionStringParser.cs index f77405ca..798665ca 100644 --- a/DuckDB.NET.Data/ConnectionString/DuckDBConnectionStringParser.cs +++ b/DuckDB.NET.Data/ConnectionString/DuckDBConnectionStringParser.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; namespace DuckDB.NET.Data.ConnectionString; @@ -39,9 +40,13 @@ public static DuckDBConnectionString Parse(string connectionString) private static string GetDataSource(IReadOnlyDictionary properties) { + var lowerCaseProperties = properties.ToDictionary(kv => kv.Value.ToLower(CultureInfo.InvariantCulture), kv => kv.Value); + foreach (var key in DuckDBConnectionStringBuilder.DataSourceKeys) { - if (properties.TryGetValue(key, out var dataSource)) + var lowerKey = key.ToLower(CultureInfo.InvariantCulture); + + if (lowerCaseProperties.TryGetValue(lowerKey, out var dataSource)) { return dataSource; } diff --git a/DuckDB.NET.Data/DuckDBConnectionStringBuilder.cs b/DuckDB.NET.Data/DuckDBConnectionStringBuilder.cs index 40b5b3e3..acc57473 100644 --- a/DuckDB.NET.Data/DuckDBConnectionStringBuilder.cs +++ b/DuckDB.NET.Data/DuckDBConnectionStringBuilder.cs @@ -10,7 +10,7 @@ public class DuckDBConnectionStringBuilder : DbConnectionStringBuilder public const string InMemorySharedDataSource = ":memory:?cache=shared"; public const string InMemorySharedConnectionString = "DataSource=:memory:?cache=shared"; - internal static readonly string[] DataSourceKeys = {"Data Source", "DataSource", "datasource", "data source"}; + internal static readonly string[] DataSourceKeys = {"Data Source", "DataSource"}; private const string DataSourceKey = "DataSource"; private string dataSource = null;