From f4dd8878d871897b1104e3be57b6f197fb0b85ee Mon Sep 17 00:00:00 2001 From: sfc-gh-dszmolka Date: Mon, 16 Dec 2024 12:35:08 +0100 Subject: [PATCH 1/2] SNOW-1855886 gracefully ignore when default region us-west-2 is used in DSN or NewConnector --- dsn.go | 13 ++++++++++++- dsn_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/dsn.go b/dsn.go index 7b7efb569..160a306f5 100644 --- a/dsn.go +++ b/dsn.go @@ -139,11 +139,17 @@ 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 = "" + logger.Info("Ignoring Region configuration in DSN as us-west-2 is the default one.") } // 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() @@ -579,6 +585,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 ba6386d5d..c6cdf0827 100644 --- a/dsn_test.go +++ b/dsn_test.go @@ -1233,6 +1233,31 @@ 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", + Password: "p", + Account: "account", + Host: "account.us-west-2.snowflakecomputing.com", + }, + dsn: "u:p@account.snowflakecomputing.com:443?ocspFailOpen=true&validateDefaultParameters=true", + }, { cfg: &Config{ User: "u", From ccdde6f3edaaf2c58f5cd64a0ee4670efcef33b3 Mon Sep 17 00:00:00 2001 From: sfc-gh-dszmolka Date: Mon, 16 Dec 2024 13:55:18 +0100 Subject: [PATCH 2/2] * removed Info level log message from Region containing us-west-2 * removed wrong test --- dsn.go | 1 - dsn_test.go | 9 --------- 2 files changed, 10 deletions(-) diff --git a/dsn.go b/dsn.go index 160a306f5..001ed73fd 100644 --- a/dsn.go +++ b/dsn.go @@ -141,7 +141,6 @@ func (c *Config) ocspMode() string { func DSN(cfg *Config) (dsn string, err error) { if strings.ToLower(cfg.Region) == "us-west-2" { cfg.Region = "" - logger.Info("Ignoring Region configuration in DSN as us-west-2 is the default one.") } // in case account includes region region, posDot := extractRegionFromAccount(cfg.Account) diff --git a/dsn_test.go b/dsn_test.go index c6cdf0827..dfa133928 100644 --- a/dsn_test.go +++ b/dsn_test.go @@ -1249,15 +1249,6 @@ func TestDSN(t *testing.T) { }, dsn: "u:p@account_us-west-2.snowflakecomputing.com:443?ocspFailOpen=true&validateDefaultParameters=true", }, - { - cfg: &Config{ - User: "u", - Password: "p", - Account: "account", - Host: "account.us-west-2.snowflakecomputing.com", - }, - dsn: "u:p@account.snowflakecomputing.com:443?ocspFailOpen=true&validateDefaultParameters=true", - }, { cfg: &Config{ User: "u",