Skip to content

ConnectionAttributes is skipped in FormatDSN #1618

Closed
@bogcon

Description

@bogcon

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions