From 621d0dc3cdc49a679949083cbc652fccafbd0e12 Mon Sep 17 00:00:00 2001 From: Agam Brahma Date: Wed, 26 Jan 2022 11:38:09 -0800 Subject: [PATCH 1/3] lint: fix `ConnectionId` --- connection.go | 4 ++-- dsn.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/connection.go b/connection.go index 1af3b3526..74ca96025 100644 --- a/connection.go +++ b/connection.go @@ -698,8 +698,8 @@ func buildSnowflakeConn(ctx context.Context, config Config) (*snowflakeConn, err if sc.cfg.DisableTelemetry { sc.telemetry = &snowflakeTelemetry{enabled: false} } - if sc.cfg.ConnectionId != "" { - sc.execRespCache = acquireExecRespCache(sc.cfg.ConnectionId) + if sc.cfg.ConnectionID != "" { + sc.execRespCache = acquireExecRespCache(sc.cfg.ConnectionID) } // authenticate diff --git a/dsn.go b/dsn.go index 4964d111b..0c4d55793 100644 --- a/dsn.go +++ b/dsn.go @@ -91,7 +91,7 @@ type Config struct { QueryMonitoringThreshold time.Duration // An identifier for this Config. Used to associate multiple connection instances with // a single logical sql.DB connection. - ConnectionId string + ConnectionID string } // ocspMode returns the OCSP mode in string INSECURE, FAIL_OPEN, FAIL_CLOSED @@ -209,8 +209,8 @@ func DSN(cfg *Config) (dsn string, err error) { params.Add("queryMonitoringThreshold", strconv.FormatInt(int64(cfg.QueryMonitoringThreshold/time.Second), 10)) - if cfg.ConnectionId != "" { - params.Add("connectionId", cfg.ConnectionId) + if cfg.ConnectionID != "" { + params.Add("connectionId", cfg.ConnectionID) } dsn = fmt.Sprintf("%v:%v@%v:%v", url.QueryEscape(cfg.User), url.QueryEscape(cfg.Password), cfg.Host, cfg.Port) @@ -440,8 +440,8 @@ func fillMissingConfigParameters(cfg *Config) error { if cfg.QueryMonitoringThreshold == 0 { cfg.QueryMonitoringThreshold = defaultQueryMonitoringThreshold } - if cfg.ConnectionId == "" { - cfg.ConnectionId = uuid.New().String() + if cfg.ConnectionID == "" { + cfg.ConnectionID = uuid.New().String() } if strings.HasSuffix(cfg.Host, defaultDomain) && len(cfg.Host) == len(defaultDomain) { From 05133562cb7dc78e128a561c0794dadf94bb6bd2 Mon Sep 17 00:00:00 2001 From: Agam Brahma Date: Wed, 26 Jan 2022 13:34:32 -0800 Subject: [PATCH 2/3] Test fixes for previous change (`41c90a09`) --- dsn_test.go | 185 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 107 insertions(+), 78 deletions(-) diff --git a/dsn_test.go b/dsn_test.go index 54c7ca09a..5af011903 100644 --- a/dsn_test.go +++ b/dsn_test.go @@ -602,115 +602,129 @@ type tcDSN struct { func TestDSN(t *testing.T) { tmfmt := "MM-DD-YYYY" + testConnectionID := "abcd-0123-4567-1234" testcases := []tcDSN{ { cfg: &Config{ - User: "u", - Password: "p", - Account: "a-aofnadsf.somewhere.azure", + User: "u", + Password: "p", + Account: "a-aofnadsf.somewhere.azure", + ConnectionID: testConnectionID, }, - dsn: "u:p@a-aofnadsf.somewhere.azure.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=somewhere.azure&validateDefaultParameters=true", + dsn: "u:p@a-aofnadsf.somewhere.azure.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=somewhere.azure&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a-aofnadsf.global", + User: "u", + Password: "p", + Account: "a-aofnadsf.global", + ConnectionID: testConnectionID, }, - dsn: "u:p@a-aofnadsf.global.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=global&validateDefaultParameters=true", + dsn: "u:p@a-aofnadsf.global.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=global&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a-aofnadsf.global", - Region: "us-west-2", + User: "u", + Password: "p", + Account: "a-aofnadsf.global", + Region: "us-west-2", + ConnectionID: testConnectionID, }, - dsn: "u:p@a-aofnadsf.global.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=global&validateDefaultParameters=true", + dsn: "u:p@a-aofnadsf.global.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=global&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a-aofnadsf.global", - Region: "r", + User: "u", + Password: "p", + Account: "a-aofnadsf.global", + Region: "r", + ConnectionID: testConnectionID, }, err: ErrInvalidRegion, }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a", + User: "u", + Password: "p", + Account: "a", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a", - Region: "us-west-2", + User: "u", + Password: "p", + Account: "a", + Region: "us-west-2", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a", - Region: "r", + User: "u", + Password: "p", + Account: "a", + Region: "r", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.r.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=r&validateDefaultParameters=true", + dsn: "u:p@a.r.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=r&validateDefaultParameters=true", }, { cfg: &Config{ - User: "", - Password: "p", - Account: "a", + User: "", + Password: "p", + Account: "a", + ConnectionID: testConnectionID, }, err: ErrEmptyUsername, }, { cfg: &Config{ - User: "u", - Password: "", - Account: "a", + User: "u", + Password: "", + Account: "a", + ConnectionID: testConnectionID, }, err: ErrEmptyPassword, }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "", + User: "u", + Password: "p", + Account: "", + ConnectionID: testConnectionID, }, err: ErrEmptyAccount, }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a.e", + User: "u", + Password: "p", + Account: "a.e", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.e.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", + dsn: "u:p@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a.e", - Region: "us-west-2", + User: "u", + Password: "p", + Account: "a.e", + Region: "us-west-2", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.e.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", + dsn: "u:p@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a.e", - Region: "r", + User: "u", + Password: "p", + Account: "a.e", + Region: "r", + ConnectionID: testConnectionID, }, err: ErrInvalidRegion, }, @@ -729,8 +743,9 @@ func TestDSN(t *testing.T) { LoginTimeout: 10 * time.Second, RequestTimeout: 300 * time.Second, Application: "special go", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.b.snowflakecomputing.com:443?application=special+go&database=db&loginTimeout=10&ocspFailOpen=true&passcode=db&passcodeInPassword=true&queryMonitoringThreshold=5®ion=b&requestTimeout=300&role=ro&schema=sc&validateDefaultParameters=true", + dsn: "u:p@a.b.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&application=special+go&database=db&loginTimeout=10&ocspFailOpen=true&passcode=db&passcodeInPassword=true&queryMonitoringThreshold=5®ion=b&requestTimeout=300&role=ro&schema=sc&validateDefaultParameters=true", }, { cfg: &Config{ @@ -738,8 +753,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a", Authenticator: AuthTypeExternalBrowser, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?authenticator=externalbrowser&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&authenticator=externalbrowser&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -751,8 +767,9 @@ func TestDSN(t *testing.T) { Scheme: "https", Host: "sc.okta.com", }, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?authenticator=https%3A%2F%2Fsc.okta.com&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&authenticator=https%3A%2F%2Fsc.okta.com&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -762,8 +779,9 @@ func TestDSN(t *testing.T) { Params: map[string]*string{ "TIMESTAMP_OUTPUT_FORMAT": &tmfmt, }, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.e.snowflakecomputing.com:443?TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", + dsn: "u:p@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", }, { cfg: &Config{ @@ -773,8 +791,9 @@ func TestDSN(t *testing.T) { Params: map[string]*string{ "TIMESTAMP_OUTPUT_FORMAT": &tmfmt, }, + ConnectionID: testConnectionID, }, - dsn: "u:%3A%40abc@a.e.snowflakecomputing.com:443?TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", + dsn: "u:%3A%40abc@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", }, { cfg: &Config{ @@ -782,8 +801,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a", OCSPFailOpen: OCSPFailOpenTrue, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -791,8 +811,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a", OCSPFailOpen: OCSPFailOpenFalse, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?ocspFailOpen=false&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=false&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -800,8 +821,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a", ValidateDefaultParameters: ConfigBoolFalse, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=false", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=false", }, { cfg: &Config{ @@ -809,8 +831,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a", ValidateDefaultParameters: ConfigBoolTrue, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -818,32 +841,36 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a", InsecureMode: true, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?insecureMode=true&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&insecureMode=true&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a.b.c", + User: "u", + Password: "p", + Account: "a.b.c", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.b.c.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", + dsn: "u:p@a.b.c.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a.b.c", - Region: "us-west-2", + User: "u", + Password: "p", + Account: "a.b.c", + Region: "us-west-2", + ConnectionID: testConnectionID, }, - dsn: "u:p@a.b.c.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", + dsn: "u:p@a.b.c.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", }, { cfg: &Config{ - User: "u", - Password: "p", - Account: "a.b.c", - Region: "r", + User: "u", + Password: "p", + Account: "a.b.c", + Region: "r", + ConnectionID: testConnectionID, }, err: ErrInvalidRegion, }, @@ -853,8 +880,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a.b.c", ClientTimeout: 300 * time.Second, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.b.c.snowflakecomputing.com:443?clientTimeout=300&ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", + dsn: "u:p@a.b.c.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&clientTimeout=300&ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", }, { cfg: &Config{ @@ -862,8 +890,9 @@ func TestDSN(t *testing.T) { Password: "p", Account: "a.e", QueryMonitoringThreshold: 20 * time.Second, + ConnectionID: testConnectionID, }, - dsn: "u:p@a.e.snowflakecomputing.com:443?ocspFailOpen=true&queryMonitoringThreshold=20®ion=e&validateDefaultParameters=true", + dsn: "u:p@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=20®ion=e&validateDefaultParameters=true", }, } for _, test := range testcases { From af6b5b4da2d9bd888b6f867eb37f5845495ca692 Mon Sep 17 00:00:00 2001 From: Agam Brahma Date: Wed, 26 Jan 2022 15:06:37 -0800 Subject: [PATCH 3/3] nit: tweaks to dsn-test --- dsn_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dsn_test.go b/dsn_test.go index 5af011903..88cbc7305 100644 --- a/dsn_test.go +++ b/dsn_test.go @@ -745,7 +745,7 @@ func TestDSN(t *testing.T) { Application: "special go", ConnectionID: testConnectionID, }, - dsn: "u:p@a.b.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&application=special+go&database=db&loginTimeout=10&ocspFailOpen=true&passcode=db&passcodeInPassword=true&queryMonitoringThreshold=5®ion=b&requestTimeout=300&role=ro&schema=sc&validateDefaultParameters=true", + dsn: "u:p@a.b.snowflakecomputing.com:443?application=special+go&connectionId=abcd-0123-4567-1234&database=db&loginTimeout=10&ocspFailOpen=true&passcode=db&passcodeInPassword=true&queryMonitoringThreshold=5®ion=b&requestTimeout=300&role=ro&schema=sc&validateDefaultParameters=true", }, { cfg: &Config{ @@ -755,7 +755,7 @@ func TestDSN(t *testing.T) { Authenticator: AuthTypeExternalBrowser, ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&authenticator=externalbrowser&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?authenticator=externalbrowser&connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -769,7 +769,7 @@ func TestDSN(t *testing.T) { }, ConnectionID: testConnectionID, }, - dsn: "u:p@a.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&authenticator=https%3A%2F%2Fsc.okta.com&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", + dsn: "u:p@a.snowflakecomputing.com:443?authenticator=https%3A%2F%2Fsc.okta.com&connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5&validateDefaultParameters=true", }, { cfg: &Config{ @@ -781,7 +781,7 @@ func TestDSN(t *testing.T) { }, ConnectionID: testConnectionID, }, - dsn: "u:p@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", + dsn: "u:p@a.e.snowflakecomputing.com:443?TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", }, { cfg: &Config{ @@ -793,7 +793,7 @@ func TestDSN(t *testing.T) { }, ConnectionID: testConnectionID, }, - dsn: "u:%3A%40abc@a.e.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", + dsn: "u:%3A%40abc@a.e.snowflakecomputing.com:443?TIMESTAMP_OUTPUT_FORMAT=MM-DD-YYYY&connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=e&validateDefaultParameters=true", }, { cfg: &Config{ @@ -882,7 +882,7 @@ func TestDSN(t *testing.T) { ClientTimeout: 300 * time.Second, ConnectionID: testConnectionID, }, - dsn: "u:p@a.b.c.snowflakecomputing.com:443?connectionId=abcd-0123-4567-1234&clientTimeout=300&ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", + dsn: "u:p@a.b.c.snowflakecomputing.com:443?clientTimeout=300&connectionId=abcd-0123-4567-1234&ocspFailOpen=true&queryMonitoringThreshold=5®ion=b.c&validateDefaultParameters=true", }, { cfg: &Config{