From 06fe54b7da747ebe26842389f3f42a7ac3d9859e Mon Sep 17 00:00:00 2001 From: Tuan Vuong Date: Thu, 27 Nov 2025 22:01:46 +0700 Subject: [PATCH 1/3] feat: adding force use db in client conn --- client/conn.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/conn.go b/client/conn.go index dd81e5ebd..21dccb086 100644 --- a/client/conn.go +++ b/client/conn.go @@ -271,7 +271,10 @@ func (c *Conn) UseDB(dbName string) error { if c.db == dbName { return nil } + return c.ForceUseDB(dbName) +} +func (c *Conn) ForceUseDB(dbName string) error { if err := c.writeCommandStr(mysql.COM_INIT_DB, dbName); err != nil { return errors.Trace(err) } From b088707123168615b9a88bc39c83249d1730f141 Mon Sep 17 00:00:00 2001 From: Tuan Vuong Date: Fri, 28 Nov 2025 17:20:29 +0700 Subject: [PATCH 2/3] fix: just remove the short circuit all together --- client/conn.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/client/conn.go b/client/conn.go index 21dccb086..d864fb970 100644 --- a/client/conn.go +++ b/client/conn.go @@ -268,13 +268,6 @@ func (c *Conn) SetTLSConfig(config *tls.Config) { } func (c *Conn) UseDB(dbName string) error { - if c.db == dbName { - return nil - } - return c.ForceUseDB(dbName) -} - -func (c *Conn) ForceUseDB(dbName string) error { if err := c.writeCommandStr(mysql.COM_INIT_DB, dbName); err != nil { return errors.Trace(err) } From 9f0f3d63f518d10d599d73bbfc0557e23fddca05 Mon Sep 17 00:00:00 2001 From: lance6716 Date: Sat, 6 Dec 2025 19:49:32 +0800 Subject: [PATCH 3/3] add unit test Signed-off-by: lance6716 --- client/conn_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/client/conn_test.go b/client/conn_test.go index c82010757..472558800 100644 --- a/client/conn_test.go +++ b/client/conn_test.go @@ -210,3 +210,30 @@ func (s *connTestSuite) TestSetQueryAttributes() { } require.Equal(s.T(), expected, s.c.queryAttributes) } + +func (s *connTestSuite) TestUseDB() { + _, err := s.c.Execute("create database if not exists proxier;") + require.NoError(s.T(), err) + err = s.c.UseDB("proxier") + require.NoError(s.T(), err) + result, err := s.c.Execute("select database();") + require.NoError(s.T(), err) + value, err := result.GetString(0, 0) + require.NoError(s.T(), err) + require.Equal(s.T(), "proxier", value) + _, err = s.c.Execute("drop database proxier;") + require.NoError(s.T(), err) + _, err = s.c.Execute("create database proxier;") + require.NoError(s.T(), err) + err = s.c.UseDB("proxier") + require.NoError(s.T(), err) + result, err = s.c.Execute("select database();") + require.NoError(s.T(), err) + value, err = result.GetString(0, 0) + require.NoError(s.T(), err) + require.Equal(s.T(), "proxier", value) + _, err = s.c.Execute("drop database proxier;") + require.NoError(s.T(), err) + err = s.c.UseDB("test") + require.NoError(s.T(), err) +}