diff --git a/CHANGELOG.md b/CHANGELOG.md index 904fcd7..9e9f57e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.1.x (Unreleased) +## 0.1.5 (2022-10-12) + +- Feat: Allow username/password in the DSN + ## 0.1.4 (2022-07-30) - Fix: Could not fetch rowsets greater than the value of `maxRows` (#18) diff --git a/databricks.go b/databricks.go index 22af791..76ed3eb 100644 --- a/databricks.go +++ b/databricks.go @@ -19,8 +19,8 @@ type Options struct { MaxRows int64 Timeout int UserAgentEntry string - - LogOut io.Writer + User string + LogOut io.Writer } const ( diff --git a/driver.go b/driver.go index ddf8e5a..eb19e6c 100644 --- a/driver.go +++ b/driver.go @@ -58,6 +58,8 @@ func parseURI(uri string) (*Options, error) { if ok { opts.Token = token } + opts.User = u.User.Username() + } else { return nil, fmt.Errorf("Token is required.") } @@ -157,7 +159,11 @@ func connect(opts *Options) (*Conn, error) { } httpOptions := thrift.THttpClientOptions{Client: httpClient} - endpointUrl := fmt.Sprintf("https://%s:%s@%s:%s"+opts.HTTPPath, "token", url.QueryEscape(opts.Token), opts.Host, opts.Port) + user := opts.User + if user == "" { + user = "token" + } + endpointUrl := fmt.Sprintf("https://%s:%s@%s:%s"+opts.HTTPPath, user, url.QueryEscape(opts.Token), opts.Host, opts.Port) transport, err = thrift.NewTHttpClientTransportFactoryWithOptions(endpointUrl, httpOptions).GetTransport(socket) if err != nil { return nil, err