mysql icon indicating copy to clipboard operation
mysql copied to clipboard

ConnectionAttributes is skipped in FormatDSN

Open bogcon opened this issue 1 year ago • 0 comments

Issue description

Config.FormatDSN does not take into account ConnectionAttributes property.

Example code

package main

import (
	"log"

	"github.com/go-sql-driver/mysql"
)

func main() {
	testDSN := "usr/pwd@tcp(127.0.0.1:3306)/dbname?connectionAttributes=foo:bar"
	cfg, err := mysql.ParseDSN(testDSN)
	if err != nil {
		log.Fatal("something went really wrong")
	}

	if cfg.ConnectionAttributes == "foo:bar" {
		reformattedDSN := cfg.FormatDSN()
		if reformattedDSN != testDSN {
			log.Fatalf("Ooops, that's buggy\noriginalDSN = %q\nreformattedDSN = %q", testDSN, reformattedDSN)
		}
	} else {
		log.Fatal("I wasn't expecting this")
	}
}

Error log

Running code from above will produce something like

2024/08/02 10:23:24 Ooops, that's buggy
originalDSN = "usr/pwd@tcp(127.0.0.1:3306)/dbname?connectionAttributes=foo:bar"
reformattedDSN = "usr/pwd@tcp(127.0.0.1:3306)/dbname"

Configuration

Not relevant in this particular case, but still:

Driver version (or git SHA): 1.8.1

Go version: go1.22.4 darwin/arm64

Server version: mysql Ver 8.4.0 for Linux on aarch64 (MySQL Community Server - GPL)

Server OS: linux c44dcabf32be 6.6.32-linuxkit #1 SMP Thu Jun 13 14:13:01 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

bogcon avatar Aug 02 '24 07:08 bogcon