fix(qe-m2-03): parse supported Npgsql keys only and ignore custom options gracefully
This commit is contained in:
@@ -53,15 +53,32 @@ namespace QuantEngine.Core.Tests
|
|||||||
string connStr = rawDsn;
|
string connStr = rawDsn;
|
||||||
if (rawDsn.Contains("host=") || rawDsn.Contains("dbname="))
|
if (rawDsn.Contains("host=") || rawDsn.Contains("dbname="))
|
||||||
{
|
{
|
||||||
connStr = rawDsn
|
try
|
||||||
.Replace("options='-c search_path=quantengine'", "")
|
{
|
||||||
.Replace("options=\"-c search_path=quantengine\"", "")
|
var builder = new NpgsqlConnectionStringBuilder();
|
||||||
.Replace("dbname=", "Database=")
|
var parts = rawDsn.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
.Replace("user=", "Username=")
|
foreach (var p in parts)
|
||||||
.Replace("host=", "Host=")
|
{
|
||||||
.Replace("port=", "Port=")
|
var kv = p.Split('=', 2);
|
||||||
.Trim();
|
if (kv.Length == 2)
|
||||||
connStr = string.Join(";", connStr.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) + ";Search Path=quantengine";
|
{
|
||||||
|
string key = kv[0].Trim().ToLowerInvariant();
|
||||||
|
string val = kv[1].Trim().Trim('\'').Trim('"');
|
||||||
|
if (key == "host") builder.Host = val;
|
||||||
|
else if (key == "port" && int.TryParse(val, out var pi)) builder.Port = pi;
|
||||||
|
else if (key == "dbname") builder.Database = val;
|
||||||
|
else if (key == "user") builder.Username = val;
|
||||||
|
else if (key == "password") builder.Password = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
builder.SearchPath = "quantengine";
|
||||||
|
connStr = builder.ConnectionString;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Fallback to rawDsn if builder logic fails
|
||||||
|
connStr = rawDsn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|||||||
Reference in New Issue
Block a user