diff --git a/dsn.go b/dsn.go index 85d86f1d7..557f5b897 100644 --- a/dsn.go +++ b/dsn.go @@ -141,11 +141,16 @@ func (c *Config) ocspMode() string { // DSN constructs a DSN for Snowflake db. func DSN(cfg *Config) (dsn string, err error) { - if cfg.Region == "us-west-2" { + if strings.ToLower(cfg.Region) == "us-west-2" { cfg.Region = "" } // in case account includes region region, posDot := extractRegionFromAccount(cfg.Account) + if strings.ToLower(region) == "us-west-2" { + region = "" + cfg.Account = cfg.Account[:posDot] + logger.Info("Ignoring default region .us-west-2 in DSN from Account configuration.") + } if region != "" { if cfg.Region != "" { return "", errRegionConflict() @@ -587,6 +592,11 @@ func transformAccountToHost(cfg *Config) (err error) { // account name is specified instead of host:port cfg.Account = cfg.Host region, posDot := extractRegionFromAccount(cfg.Account) + if strings.ToLower(region) == "us-west-2" { + region = "" + cfg.Account = cfg.Account[:posDot] + logger.Info("Ignoring default region .us-west-2 from Account configuration.") + } if region != "" { cfg.Region = region cfg.Account = cfg.Account[:posDot] diff --git a/dsn_test.go b/dsn_test.go index ec4f61303..9052b5c19 100644 --- a/dsn_test.go +++ b/dsn_test.go @@ -1297,6 +1297,22 @@ func TestDSN(t *testing.T) { }, dsn: "u:p@account-name.cn-region.snowflakecomputing.cn:443?account=account-name&ocspFailOpen=true®ion=cn-region&validateDefaultParameters=true", }, + { + cfg: &Config{ + User: "u", + Password: "p", + Account: "account.us-west-2", + }, + dsn: "u:p@account.snowflakecomputing.com:443?ocspFailOpen=true&validateDefaultParameters=true", + }, + { + cfg: &Config{ + User: "u", + Password: "p", + Account: "account_us-west-2", + }, + dsn: "u:p@account_us-west-2.snowflakecomputing.com:443?ocspFailOpen=true&validateDefaultParameters=true", + }, { cfg: &Config{ User: "u",