Closed
Description
Issue description
Due to how the dsn decoding is done any username with a ':' fails. We have a system at my job where ':' are required.
Since there is no url.QueryUnescape() on the username adding the proper escapes, like standard based URI, doesn't work. It will either be treated as a password incorrectly or the escaped value will be never unescaped and so the user will fail.
Adding a url.QueryUnescape into dsn.go fixes the issue for me.
Example code
// unescaped treats it like a password (which is ok)
db.Open('mysql', "foo:bar@tcp(localhost)")
// escaped should work
db.Open('mysql', "foo%3Abar@tcp(localhost)")