go-mssqldb UPDATE (#9522)
This commit is contained in:
parent
ed67bbe444
commit
599c0ee75f
7 changed files with 36 additions and 14 deletions
2
vendor/github.com/denisenkom/go-mssqldb/README.md
generated
vendored
2
vendor/github.com/denisenkom/go-mssqldb/README.md
generated
vendored
|
@ -56,7 +56,7 @@ Other supported formats are listed below.
|
|||
* `hostNameInCertificate` - Specifies the Common Name (CN) in the server certificate. Default value is the server host.
|
||||
* `ServerSPN` - The kerberos SPN (Service Principal Name) for the server. Default is MSSQLSvc/host:port.
|
||||
* `Workstation ID` - The workstation name (default is the host name)
|
||||
* `ApplicationIntent` - Can be given the value `ReadOnly` to initiate a read-only connection to an Availability Group listener.
|
||||
* `ApplicationIntent` - Can be given the value `ReadOnly` to initiate a read-only connection to an Availability Group listener. The `database` must be specified when connecting with `Application Intent` set to `ReadOnly`.
|
||||
|
||||
### The connection string can be specified in one of three formats:
|
||||
|
||||
|
|
21
vendor/github.com/denisenkom/go-mssqldb/conn_str.go
generated
vendored
21
vendor/github.com/denisenkom/go-mssqldb/conn_str.go
generated
vendored
|
@ -11,6 +11,8 @@ import (
|
|||
"unicode"
|
||||
)
|
||||
|
||||
const defaultServerPort = 1433
|
||||
|
||||
type connectParams struct {
|
||||
logFlags uint64
|
||||
port uint64
|
||||
|
@ -78,7 +80,7 @@ func parseConnectParams(dsn string) (connectParams, error) {
|
|||
p.user = params["user id"]
|
||||
p.password = params["password"]
|
||||
|
||||
p.port = 1433
|
||||
p.port = 0
|
||||
strport, ok := params["port"]
|
||||
if ok {
|
||||
var err error
|
||||
|
@ -183,7 +185,7 @@ func parseConnectParams(dsn string) (connectParams, error) {
|
|||
if ok {
|
||||
p.serverSPN = serverSPN
|
||||
} else {
|
||||
p.serverSPN = fmt.Sprintf("MSSQLSvc/%s:%d", p.host, p.port)
|
||||
p.serverSPN = generateSpn(p.host, resolveServerPort(p.port))
|
||||
}
|
||||
|
||||
workstation, ok := params["workstation id"]
|
||||
|
@ -205,6 +207,9 @@ func parseConnectParams(dsn string) (connectParams, error) {
|
|||
appintent, ok := params["applicationintent"]
|
||||
if ok {
|
||||
if appintent == "ReadOnly" {
|
||||
if p.database == "" {
|
||||
return p, fmt.Errorf("Database must be specified when ApplicationIntent is ReadOnly")
|
||||
}
|
||||
p.typeFlags |= fReadOnlyIntent
|
||||
}
|
||||
}
|
||||
|
@ -451,3 +456,15 @@ func splitConnectionStringOdbc(dsn string) (map[string]string, error) {
|
|||
func normalizeOdbcKey(s string) string {
|
||||
return strings.ToLower(strings.TrimRightFunc(s, unicode.IsSpace))
|
||||
}
|
||||
|
||||
func resolveServerPort(port uint64) uint64 {
|
||||
if port == 0 {
|
||||
return defaultServerPort
|
||||
}
|
||||
|
||||
return port
|
||||
}
|
||||
|
||||
func generateSpn(host string, port uint64) string {
|
||||
return fmt.Sprintf("MSSQLSvc/%s:%d", host, port)
|
||||
}
|
||||
|
|
2
vendor/github.com/denisenkom/go-mssqldb/mssql.go
generated
vendored
2
vendor/github.com/denisenkom/go-mssqldb/mssql.go
generated
vendored
|
@ -613,11 +613,13 @@ loop:
|
|||
break loop
|
||||
case doneStruct:
|
||||
if token.isError() {
|
||||
cancel()
|
||||
return nil, s.c.checkBadConn(token.getError())
|
||||
}
|
||||
case ReturnStatus:
|
||||
s.c.setReturnStatus(token)
|
||||
case error:
|
||||
cancel()
|
||||
return nil, s.c.checkBadConn(token)
|
||||
}
|
||||
}
|
||||
|
|
11
vendor/github.com/denisenkom/go-mssqldb/tds.go
generated
vendored
11
vendor/github.com/denisenkom/go-mssqldb/tds.go
generated
vendored
|
@ -666,14 +666,14 @@ func dialConnection(ctx context.Context, c *Connector, p connectParams) (conn ne
|
|||
}
|
||||
if len(ips) == 1 {
|
||||
d := c.getDialer(&p)
|
||||
addr := net.JoinHostPort(ips[0].String(), strconv.Itoa(int(p.port)))
|
||||
addr := net.JoinHostPort(ips[0].String(), strconv.Itoa(int(resolveServerPort(p.port))))
|
||||
conn, err = d.DialContext(ctx, "tcp", addr)
|
||||
|
||||
} else {
|
||||
//Try Dials in parallel to avoid waiting for timeouts.
|
||||
connChan := make(chan net.Conn, len(ips))
|
||||
errChan := make(chan error, len(ips))
|
||||
portStr := strconv.Itoa(int(p.port))
|
||||
portStr := strconv.Itoa(int(resolveServerPort(p.port)))
|
||||
for _, ip := range ips {
|
||||
go func(ip net.IP) {
|
||||
d := c.getDialer(&p)
|
||||
|
@ -711,7 +711,7 @@ func dialConnection(ctx context.Context, c *Connector, p connectParams) (conn ne
|
|||
// Can't do the usual err != nil check, as it is possible to have gotten an error before a successful connection
|
||||
if conn == nil {
|
||||
f := "Unable to open tcp connection with host '%v:%v': %v"
|
||||
return nil, fmt.Errorf(f, p.host, p.port, err.Error())
|
||||
return nil, fmt.Errorf(f, p.host, resolveServerPort(p.port), err.Error())
|
||||
}
|
||||
return conn, err
|
||||
}
|
||||
|
@ -724,7 +724,7 @@ func connect(ctx context.Context, c *Connector, log optionalLogger, p connectPar
|
|||
defer cancel()
|
||||
}
|
||||
// if instance is specified use instance resolution service
|
||||
if p.instance != "" {
|
||||
if p.instance != "" && p.port == 0 {
|
||||
p.instance = strings.ToUpper(p.instance)
|
||||
d := c.getDialer(&p)
|
||||
instances, err := getInstances(dialCtx, d, p.host)
|
||||
|
@ -737,11 +737,12 @@ func connect(ctx context.Context, c *Connector, log optionalLogger, p connectPar
|
|||
f := "No instance matching '%v' returned from host '%v'"
|
||||
return nil, fmt.Errorf(f, p.instance, p.host)
|
||||
}
|
||||
p.port, err = strconv.ParseUint(strport, 0, 16)
|
||||
port, err := strconv.ParseUint(strport, 0, 16)
|
||||
if err != nil {
|
||||
f := "Invalid tcp port returned from Sql Server Browser '%v': %v"
|
||||
return nil, fmt.Errorf(f, strport, err.Error())
|
||||
}
|
||||
p.port = port
|
||||
}
|
||||
|
||||
initiate_connection:
|
||||
|
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
|
@ -114,7 +114,7 @@ github.com/couchbase/vellum/utf8
|
|||
github.com/couchbaselabs/go-couchbase
|
||||
# github.com/davecgh/go-spew v1.1.1
|
||||
github.com/davecgh/go-spew/spew
|
||||
# github.com/denisenkom/go-mssqldb v0.0.0-20190924004331-208c0a498538
|
||||
# github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73
|
||||
github.com/denisenkom/go-mssqldb
|
||||
github.com/denisenkom/go-mssqldb/internal/cp
|
||||
github.com/denisenkom/go-mssqldb/internal/decimal
|
||||
|
@ -439,7 +439,7 @@ go.mongodb.org/mongo-driver/bson/bsonrw
|
|||
go.mongodb.org/mongo-driver/bson/bsontype
|
||||
go.mongodb.org/mongo-driver/bson/primitive
|
||||
go.mongodb.org/mongo-driver/x/bsonx/bsoncore
|
||||
# golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413
|
||||
# golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876
|
||||
golang.org/x/crypto/acme
|
||||
golang.org/x/crypto/acme/autocert
|
||||
golang.org/x/crypto/argon2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue