diff --git a/agents/drivers/oracle-go/main.go b/agents/drivers/oracle-go/main.go index 5ac0b1160..0f14a7de6 100644 --- a/agents/drivers/oracle-go/main.go +++ b/agents/drivers/oracle-go/main.go @@ -939,17 +939,11 @@ func openDBWithStringConverter(params connectParams, stringConverter converters. if err != nil { return nil, err } - var db *sql.DB - if stringConverter == nil { - db, err = sql.Open("oracle", dsn) - if err != nil { - return nil, err - } - } else { - connector := go_ora.NewConnector(dsn) + connector := go_ora.NewConnector(dsn) + if stringConverter != nil { go_ora.SetStringConverter(connector, stringConverter, nil) - db = sql.OpenDB(connector) } + db := sql.OpenDB(connector) db.SetMaxOpenConns(4) db.SetMaxIdleConns(1) db.SetConnMaxLifetime(30 * time.Minute) diff --git a/agents/drivers/oracle-go/main_test.go b/agents/drivers/oracle-go/main_test.go index 532d12e12..dffbf4fc9 100644 --- a/agents/drivers/oracle-go/main_test.go +++ b/agents/drivers/oracle-go/main_test.go @@ -816,6 +816,30 @@ func TestOracleGB18030ConverterRoundTrip(t *testing.T) { } } +func TestOpenDBUsesIndependentOracleDrivers(t *testing.T) { + params := connectParams{ + Host: "127.0.0.1", + Port: 1521, + Database: "ORCL", + Username: "dbx", + Password: "secret", + } + first, err := openDB(params) + if err != nil { + t.Fatal(err) + } + defer first.Close() + second, err := openDB(params) + if err != nil { + t.Fatal(err) + } + defer second.Close() + + if first.Driver() == second.Driver() { + t.Fatal("Oracle connections must not share the driver's cached charset converters") + } +} + func TestOracleStringConverterForUnsupportedCharsetError(t *testing.T) { err := errors.New("the server use charset with id: 854 which is not supported by the driver") converter, ok := oracleStringConverterForUnsupportedCharsetError(err)