diff --git a/pkg/proxy/backend/backend_conn_mgr.go b/pkg/proxy/backend/backend_conn_mgr.go index 6cc15549..9aa00cb1 100644 --- a/pkg/proxy/backend/backend_conn_mgr.go +++ b/pkg/proxy/backend/backend_conn_mgr.go @@ -260,7 +260,7 @@ func (mgr *BackendConnManager) ExecuteCmd(ctx context.Context, request []byte) ( err = mysql.ErrMalformPacket return } - cmd := request[0] + cmd := pnet.Command(request[0]) startTime := time.Now() mgr.processLock.Lock() defer mgr.processLock.Unlock() @@ -285,9 +285,9 @@ func (mgr *BackendConnManager) ExecuteCmd(ctx context.Context, request []byte) ( } if err == nil { switch cmd { - case mysql.ComQuit: + case pnet.ComQuit: return - case mysql.ComSetOption: + case pnet.ComSetOption: val := binary.LittleEndian.Uint16(request[1:]) switch val { case 0: @@ -300,7 +300,7 @@ func (mgr *BackendConnManager) ExecuteCmd(ctx context.Context, request []byte) ( err = errors.Errorf("unrecognized set_option value:%d", val) return } - case mysql.ComChangeUser: + case pnet.ComChangeUser: username, db := pnet.ParseChangeUser(request) mgr.authenticator.changeUser(username, db) return diff --git a/pkg/proxy/backend/backend_conn_mgr_test.go b/pkg/proxy/backend/backend_conn_mgr_test.go index 1c6a8a9a..e9885c5d 100644 --- a/pkg/proxy/backend/backend_conn_mgr_test.go +++ b/pkg/proxy/backend/backend_conn_mgr_test.go @@ -148,10 +148,10 @@ func (ts *backendMgrTester) forwardCmd4Proxy(clientIO, backendIO *pnet.PacketIO) clientIO.ResetSequence() request, err := clientIO.ReadPacket() require.NoError(ts.t, err) - prevCounter, err := readCmdCounter(request[0], ts.tc.backendListener.Addr().String()) + prevCounter, err := readCmdCounter(pnet.Command(request[0]), ts.tc.backendListener.Addr().String()) require.NoError(ts.t, err) rsErr := ts.mp.ExecuteCmd(context.Background(), request) - curCounter, err := readCmdCounter(request[0], ts.tc.backendListener.Addr().String()) + curCounter, err := readCmdCounter(pnet.Command(request[0]), ts.tc.backendListener.Addr().String()) require.NoError(ts.t, err) require.Equal(ts.t, prevCounter+1, curCounter) return rsErr @@ -470,7 +470,7 @@ func TestSpecialCmds(t *testing.T) { // change user { client: func(packetIO *pnet.PacketIO) error { - ts.mc.cmd = mysql.ComChangeUser + ts.mc.cmd = pnet.ComChangeUser ts.mc.username = "another_user" ts.mc.dbName = "another_db" return ts.mc.request(packetIO) @@ -481,7 +481,7 @@ func TestSpecialCmds(t *testing.T) { // disable multi-stmts { client: func(packetIO *pnet.PacketIO) error { - ts.mc.cmd = mysql.ComSetOption + ts.mc.cmd = pnet.ComSetOption ts.mc.dataBytes = []byte{1, 0} return ts.mc.request(packetIO) }, diff --git a/pkg/proxy/backend/cmd_processor.go b/pkg/proxy/backend/cmd_processor.go index 5bd601d0..c224dfa5 100644 --- a/pkg/proxy/backend/cmd_processor.go +++ b/pkg/proxy/backend/cmd_processor.go @@ -68,24 +68,24 @@ func (cp *CmdProcessor) updatePrepStmtStatus(request []byte, serverStatus uint16 stmtID int prepStmtStatus uint32 ) - cmd := request[0] + cmd := pnet.Command(request[0]) switch cmd { - case mysql.ComStmtSendLongData, mysql.ComStmtExecute, mysql.ComStmtFetch, mysql.ComStmtReset, mysql.ComStmtClose: + case pnet.ComStmtSendLongData, pnet.ComStmtExecute, pnet.ComStmtFetch, pnet.ComStmtReset, pnet.ComStmtClose: stmtID = int(binary.LittleEndian.Uint32(request[1:5])) - case mysql.ComResetConnection, mysql.ComChangeUser: + case pnet.ComResetConnection, pnet.ComChangeUser: cp.preparedStmtStatus = make(map[int]uint32) return default: return } switch cmd { - case mysql.ComStmtSendLongData: + case pnet.ComStmtSendLongData: prepStmtStatus = StatusPrepareWaitExecute - case mysql.ComStmtExecute: + case pnet.ComStmtExecute: if serverStatus&mysql.ServerStatusCursorExists > 0 { prepStmtStatus = StatusPrepareWaitFetch } - case mysql.ComStmtFetch: + case pnet.ComStmtFetch: if serverStatus&mysql.ServerStatusLastRowSend == 0 { prepStmtStatus = StatusPrepareWaitFetch } diff --git a/pkg/proxy/backend/cmd_processor_exec.go b/pkg/proxy/backend/cmd_processor_exec.go index fbb93d26..040fb369 100644 --- a/pkg/proxy/backend/cmd_processor_exec.go +++ b/pkg/proxy/backend/cmd_processor_exec.go @@ -37,8 +37,8 @@ func (cp *CmdProcessor) executeCmd(request []byte, clientIO, backendIO *pnet.Pac } func (cp *CmdProcessor) forwardCommand(clientIO, backendIO *pnet.PacketIO, request []byte) error { - cmd := request[0] - if cmd != mysql.ComChangeUser { + cmd := pnet.Command(request[0]) + if cmd != pnet.ComChangeUser { if err := backendIO.WritePacket(request, true); err != nil { return err } @@ -49,23 +49,23 @@ func (cp *CmdProcessor) forwardCommand(clientIO, backendIO *pnet.PacketIO, reque } } switch cmd { - case mysql.ComStmtPrepare: + case pnet.ComStmtPrepare: return cp.forwardPrepareCmd(clientIO, backendIO) - case mysql.ComStmtFetch: + case pnet.ComStmtFetch: return cp.forwardFetchCmd(clientIO, backendIO, request) - case mysql.ComQuery, mysql.ComStmtExecute, mysql.ComProcessInfo: + case pnet.ComQuery, pnet.ComStmtExecute, pnet.ComProcessInfo: return cp.forwardQueryCmd(clientIO, backendIO, request) - case mysql.ComStmtClose: + case pnet.ComStmtClose: return cp.forwardCloseCmd(request) - case mysql.ComStmtSendLongData: + case pnet.ComStmtSendLongData: return cp.forwardSendLongDataCmd(request) - case mysql.ComChangeUser: + case pnet.ComChangeUser: return cp.forwardChangeUserCmd(clientIO, backendIO, request) - case mysql.ComStatistics: + case pnet.ComStatistics: return cp.forwardStatisticsCmd(clientIO, backendIO) - case mysql.ComFieldList: + case pnet.ComFieldList: return cp.forwardFieldListCmd(clientIO, backendIO, request) - case mysql.ComQuit: + case pnet.ComQuit: return cp.forwardQuitCmd() } @@ -158,7 +158,7 @@ func (cp *CmdProcessor) forwardPrepareCmd(clientIO, backendIO *pnet.PacketIO) er return cp.handleErrorPacket(response) } // impossible here - return errors.Errorf("unexpected response, cmd:%d resp:%d", mysql.ComStmtPrepare, response[0]) + return errors.Errorf("unexpected response, cmd:%d resp:%d", pnet.ComStmtPrepare, response[0]) } func (cp *CmdProcessor) forwardFetchCmd(clientIO, backendIO *pnet.PacketIO, request []byte) error { @@ -231,7 +231,7 @@ func (cp *CmdProcessor) forwardLoadInFile(clientIO, backendIO *pnet.PacketIO, re return serverStatus, cp.handleErrorPacket(response) } // impossible here - return serverStatus, errors.Errorf("unexpected response, cmd:%d resp:%d", mysql.ComQuery, response[0]) + return serverStatus, errors.Errorf("unexpected response, cmd:%d resp:%d", pnet.ComQuery, response[0]) } func (cp *CmdProcessor) forwardResultSet(clientIO, backendIO *pnet.PacketIO, request []byte) (uint16, error) { @@ -310,9 +310,9 @@ func (cp *CmdProcessor) forwardQuitCmd() error { // The application may always omit `COMMIT` and thus the session can never be redirected. // We can send a `COMMIT` statement to the current backend and then forward the `BEGIN` statement to the new backend. func (cp *CmdProcessor) needHoldRequest(request []byte) bool { - cmd, data := request[0], request[1:] + cmd, data := pnet.Command(request[0]), request[1:] // BEGIN/START TRANSACTION statements cannot be prepared. - if cmd != mysql.ComQuery { + if cmd != pnet.ComQuery { return false } // Hold request only when it's waiting for the end of the transaction. diff --git a/pkg/proxy/backend/cmd_processor_query.go b/pkg/proxy/backend/cmd_processor_query.go index 79eff310..87792a45 100644 --- a/pkg/proxy/backend/cmd_processor_query.go +++ b/pkg/proxy/backend/cmd_processor_query.go @@ -21,7 +21,7 @@ func (cp *CmdProcessor) query(packetIO *pnet.PacketIO, sql string) (result *gomy packetIO.ResetSequence() data := hack.Slice(sql) request := make([]byte, 0, 1+len(data)) - request = append(request, mysql.ComQuery) + request = append(request, pnet.ComQuery.Byte()) request = append(request, data...) if err = packetIO.WritePacket(request, true); err != nil { return diff --git a/pkg/proxy/backend/cmd_processor_test.go b/pkg/proxy/backend/cmd_processor_test.go index 710c71e9..f2adeb62 100644 --- a/pkg/proxy/backend/cmd_processor_test.go +++ b/pkg/proxy/backend/cmd_processor_test.go @@ -28,40 +28,41 @@ const ( ) // cmdResponseTypes lists all commands and their responses. -var cmdResponseTypes = map[byte][]respondType{ - mysql.ComSleep: {responseTypeErr}, - mysql.ComQuit: {responseTypeNone}, - mysql.ComInitDB: {responseTypeOK, responseTypeErr}, - mysql.ComQuery: {responseTypeOK, responseTypeErr, responseTypeResultSet, responseTypeLoadFile}, - mysql.ComFieldList: {responseTypeErr, responseTypeColumn}, - mysql.ComCreateDB: {responseTypeOK, responseTypeErr}, - mysql.ComDropDB: {responseTypeOK, responseTypeErr}, - mysql.ComRefresh: {responseTypeOK, responseTypeErr}, - mysql.ComShutdown: {responseTypeOK, responseTypeErr}, - mysql.ComStatistics: {responseTypeString}, - mysql.ComProcessInfo: {responseTypeErr, responseTypeResultSet}, - mysql.ComConnect: {responseTypeErr}, - mysql.ComProcessKill: {responseTypeOK, responseTypeErr}, - mysql.ComDebug: {responseTypeEOF, responseTypeErr}, - mysql.ComPing: {responseTypeOK}, - mysql.ComTime: {responseTypeErr}, - mysql.ComDelayedInsert: {responseTypeErr}, - mysql.ComChangeUser: {responseTypeSwitchRequest, responseTypeOK, responseTypeErr}, - mysql.ComBinlogDump: {responseTypeErr}, - mysql.ComTableDump: {responseTypeErr}, - mysql.ComConnectOut: {responseTypeErr}, - mysql.ComRegisterSlave: {responseTypeErr}, - mysql.ComStmtPrepare: {responseTypePrepareOK, responseTypeErr}, - mysql.ComStmtExecute: {responseTypeOK, responseTypeErr, responseTypeResultSet}, - mysql.ComStmtSendLongData: {responseTypeNone}, - mysql.ComStmtClose: {responseTypeNone}, - mysql.ComStmtReset: {responseTypeOK, responseTypeErr}, - mysql.ComSetOption: {responseTypeEOF, responseTypeErr}, - mysql.ComStmtFetch: {responseTypeRow, responseTypeErr}, - mysql.ComDaemon: {responseTypeErr}, - mysql.ComBinlogDumpGtid: {responseTypeErr}, - mysql.ComResetConnection: {responseTypeOK, responseTypeErr}, - mysql.ComEnd: {responseTypeErr}, +var cmdResponseTypes = map[pnet.Command][]respondType{ + pnet.ComSleep: {responseTypeErr}, + pnet.ComQuit: {responseTypeNone}, + pnet.ComInitDB: {responseTypeOK, responseTypeErr}, + pnet.ComQuery: {responseTypeOK, responseTypeErr, responseTypeResultSet, responseTypeLoadFile}, + pnet.ComFieldList: {responseTypeErr, responseTypeColumn}, + pnet.ComCreateDB: {responseTypeOK, responseTypeErr}, + pnet.ComDropDB: {responseTypeOK, responseTypeErr}, + pnet.ComRefresh: {responseTypeOK, responseTypeErr}, + // It is comShutdown + pnet.ComDeprecated1: {responseTypeOK, responseTypeErr}, + pnet.ComStatistics: {responseTypeString}, + pnet.ComProcessInfo: {responseTypeErr, responseTypeResultSet}, + pnet.ComConnect: {responseTypeErr}, + pnet.ComProcessKill: {responseTypeOK, responseTypeErr}, + pnet.ComDebug: {responseTypeEOF, responseTypeErr}, + pnet.ComPing: {responseTypeOK}, + pnet.ComTime: {responseTypeErr}, + pnet.ComDelayedInsert: {responseTypeErr}, + pnet.ComChangeUser: {responseTypeSwitchRequest, responseTypeOK, responseTypeErr}, + pnet.ComBinlogDump: {responseTypeErr}, + pnet.ComTableDump: {responseTypeErr}, + pnet.ComConnectOut: {responseTypeErr}, + pnet.ComRegisterSlave: {responseTypeErr}, + pnet.ComStmtPrepare: {responseTypePrepareOK, responseTypeErr}, + pnet.ComStmtExecute: {responseTypeOK, responseTypeErr, responseTypeResultSet}, + pnet.ComStmtSendLongData: {responseTypeNone}, + pnet.ComStmtClose: {responseTypeNone}, + pnet.ComStmtReset: {responseTypeOK, responseTypeErr}, + pnet.ComSetOption: {responseTypeEOF, responseTypeErr}, + pnet.ComStmtFetch: {responseTypeRow, responseTypeErr}, + pnet.ComDaemon: {responseTypeErr}, + pnet.ComBinlogDumpGtid: {responseTypeErr}, + pnet.ComResetConnection: {responseTypeOK, responseTypeErr}, + pnet.ComEnd: {responseTypeErr}, } // Test forwarding packets between the client and the backend. @@ -190,7 +191,7 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtPrepare + cfg.clientConfig.cmd = pnet.ComStmtPrepare cfg.backendConfig.respondType = responseTypePrepareOK }, }, @@ -200,7 +201,7 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, @@ -211,12 +212,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet @@ -227,12 +228,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeOK }, @@ -242,12 +243,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeErr }, @@ -257,12 +258,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeOK }, @@ -272,17 +273,17 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeOK }, @@ -292,12 +293,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet @@ -310,7 +311,7 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet @@ -322,14 +323,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeRow cfg.backendConfig.status = mysql.ServerStatusCursorExists @@ -340,14 +341,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeRow cfg.backendConfig.status = mysql.ServerStatusLastRowSend @@ -358,14 +359,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeErr }, @@ -375,21 +376,21 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeRow cfg.backendConfig.status = mysql.ServerStatusLastRowSend @@ -400,19 +401,19 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeRow cfg.backendConfig.status = mysql.ServerStatusLastRowSend @@ -424,12 +425,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtClose + cfg.clientConfig.cmd = pnet.ComStmtClose cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, @@ -439,12 +440,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtClose + cfg.clientConfig.cmd = pnet.ComStmtClose cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeNone }, @@ -454,12 +455,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtReset + cfg.clientConfig.cmd = pnet.ComStmtReset cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeOK }, @@ -469,12 +470,12 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtReset + cfg.clientConfig.cmd = pnet.ComStmtReset cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeOK }, @@ -485,14 +486,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtClose + cfg.clientConfig.cmd = pnet.ComStmtClose cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, @@ -502,14 +503,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtReset + cfg.clientConfig.cmd = pnet.ComStmtReset cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeOK }, @@ -519,14 +520,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtClose + cfg.clientConfig.cmd = pnet.ComStmtClose cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeNone }, @@ -536,14 +537,14 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtReset + cfg.clientConfig.cmd = pnet.ComStmtReset cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeOK }, @@ -554,19 +555,19 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComResetConnection + cfg.clientConfig.cmd = pnet.ComResetConnection cfg.backendConfig.respondType = responseTypeOK }, }, @@ -575,19 +576,19 @@ func TestPreparedStmts(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtSendLongData + cfg.clientConfig.cmd = pnet.ComStmtSendLongData cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeNone }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComChangeUser + cfg.clientConfig.cmd = pnet.ComChangeUser cfg.backendConfig.respondType = responseTypeOK }, }, @@ -615,7 +616,7 @@ func TestTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit | mysql.ServerStatusInTrans }, @@ -625,7 +626,7 @@ func TestTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusInTrans }, @@ -635,12 +636,12 @@ func TestTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = 0 }, @@ -650,12 +651,12 @@ func TestTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit | mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit }, @@ -665,12 +666,12 @@ func TestTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComChangeUser + cfg.clientConfig.cmd = pnet.ComChangeUser cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit }, @@ -680,12 +681,12 @@ func TestTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComResetConnection + cfg.clientConfig.cmd = pnet.ComResetConnection cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit }, @@ -714,12 +715,12 @@ func TestMixPrepAndTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusInTrans @@ -730,14 +731,14 @@ func TestMixPrepAndTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusInTrans | mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeRow cfg.backendConfig.status = mysql.ServerStatusInTrans | mysql.ServerStatusLastRowSend @@ -748,14 +749,14 @@ func TestMixPrepAndTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusInTrans | mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = 0 @@ -766,14 +767,14 @@ func TestMixPrepAndTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusInTrans | mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComResetConnection + cfg.clientConfig.cmd = pnet.ComResetConnection cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit }, @@ -783,20 +784,20 @@ func TestMixPrepAndTxnStatus(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusInTrans | mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtFetch + cfg.clientConfig.cmd = pnet.ComStmtFetch cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.respondType = responseTypeRow cfg.backendConfig.status = mysql.ServerStatusInTrans | mysql.ServerStatusLastRowSend }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 2 cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = 0 @@ -826,12 +827,12 @@ func TestHoldRequest(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit | mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.clientConfig.sql = "begin" cfg.proxyConfig.waitRedirect = true cfg.backendConfig.respondType = responseTypeOK @@ -845,12 +846,12 @@ func TestHoldRequest(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit | mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.clientConfig.sql = "commit" cfg.proxyConfig.waitRedirect = true cfg.backendConfig.respondType = responseTypeOK @@ -863,12 +864,12 @@ func TestHoldRequest(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit | mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeOK @@ -881,19 +882,19 @@ func TestHoldRequest(t *testing.T) { { cfgs: []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.status = mysql.ServerStatusAutocommit | mysql.ServerStatusInTrans }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComStmtExecute + cfg.clientConfig.cmd = pnet.ComStmtExecute cfg.clientConfig.prepStmtID = 1 cfg.backendConfig.columns = 1 cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.status = mysql.ServerStatusCursorExists }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.clientConfig.sql = "begin" cfg.proxyConfig.waitRedirect = true cfg.backendConfig.respondType = responseTypeOK @@ -976,31 +977,31 @@ func TestMultiStmt(t *testing.T) { // COM_STMT_PREPARE don't support multiple statements, so we only test COM_QUERY. cfgs := []cfgOverrider{ func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeOK cfg.backendConfig.stmtNum = 2 }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.columns = 1 cfg.backendConfig.stmtNum = 2 }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.columns = 1 cfg.backendConfig.rows = 1 cfg.backendConfig.stmtNum = 2 }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeResultSet cfg.backendConfig.columns = 1 cfg.backendConfig.stmtNum = 3 }, func(cfg *testConfig) { - cfg.clientConfig.cmd = mysql.ComQuery + cfg.clientConfig.cmd = pnet.ComQuery cfg.backendConfig.respondType = responseTypeLoadFile cfg.backendConfig.stmtNum = 2 }, diff --git a/pkg/proxy/backend/metrics.go b/pkg/proxy/backend/metrics.go index 2f3a683b..50582937 100644 --- a/pkg/proxy/backend/metrics.go +++ b/pkg/proxy/backend/metrics.go @@ -10,8 +10,8 @@ import ( pnet "github.com/pingcap/TiProxy/pkg/proxy/net" ) -func addCmdMetrics(cmd byte, addr string, startTime time.Time) { - label := pnet.Command(cmd).String() +func addCmdMetrics(cmd pnet.Command, addr string, startTime time.Time) { + label := cmd.String() metrics.QueryTotalCounter.WithLabelValues(addr, label).Inc() // The duration labels are different with TiDB: Labels in TiDB are statement types. @@ -20,8 +20,8 @@ func addCmdMetrics(cmd byte, addr string, startTime time.Time) { metrics.QueryDurationHistogram.WithLabelValues(addr, label).Observe(cost.Seconds()) } -func readCmdCounter(cmd byte, addr string) (int, error) { - label := pnet.Command(cmd).String() +func readCmdCounter(cmd pnet.Command, addr string) (int, error) { + label := cmd.String() return metrics.ReadCounter(metrics.QueryTotalCounter.WithLabelValues(addr, label)) } diff --git a/pkg/proxy/backend/mock_backend_test.go b/pkg/proxy/backend/mock_backend_test.go index 15742637..53b39ffd 100644 --- a/pkg/proxy/backend/mock_backend_test.go +++ b/pkg/proxy/backend/mock_backend_test.go @@ -152,7 +152,7 @@ func (mb *mockBackend) respondOnce(packetIO *pnet.PacketIO) error { case responseTypeErr: return packetIO.WriteErrPacket(mysql.NewErr(mysql.ErrUnknown)) case responseTypeResultSet: - if pkt[0] == mysql.ComQuery && string(pkt[1:]) == sqlQueryState { + if pnet.Command(pkt[0]) == pnet.ComQuery && string(pkt[1:]) == sqlQueryState { return mb.respondSessionStates(packetIO) } return mb.respondResultSet(packetIO) diff --git a/pkg/proxy/backend/mock_client_test.go b/pkg/proxy/backend/mock_client_test.go index 491fc554..ef0ff03f 100644 --- a/pkg/proxy/backend/mock_client_test.go +++ b/pkg/proxy/backend/mock_client_test.go @@ -25,8 +25,7 @@ type clientConfig struct { prepStmtID int capability pnet.Capability collation uint8 - // for cmd - cmd byte + cmd pnet.Command // for both auth and cmd abnormalExit bool } @@ -39,7 +38,7 @@ func newClientConfig() *clientConfig { authPlugin: mysql.AuthCachingSha2Password, authData: mockAuthData, attrs: make(map[string]string), - cmd: mysql.ComQuery, + cmd: pnet.ComQuery, dataBytes: mockCmdBytes, sql: mockCmdStr, } @@ -125,39 +124,39 @@ func (mc *mockClient) request(packetIO *pnet.PacketIO) error { return packetIO.Close() } packetIO.ResetSequence() - data := []byte{mc.cmd} + data := []byte{mc.cmd.Byte()} switch mc.cmd { - case mysql.ComInitDB, mysql.ComCreateDB, mysql.ComDropDB: + case pnet.ComInitDB, pnet.ComCreateDB, pnet.ComDropDB: data = append(data, []byte(mockCmdStr)...) - case mysql.ComQuery: + case pnet.ComQuery: return mc.query(packetIO) - case mysql.ComProcessInfo: + case pnet.ComProcessInfo: return mc.requestProcessInfo(packetIO) - case mysql.ComFieldList: + case pnet.ComFieldList: return mc.requestFieldList(packetIO) - case mysql.ComRefresh, mysql.ComSetOption: + case pnet.ComRefresh, pnet.ComSetOption: data = append(data, mc.dataBytes...) - case mysql.ComProcessKill: + case pnet.ComProcessKill: data = pnet.DumpUint32(data, uint32(mockCmdInt)) - case mysql.ComChangeUser: + case pnet.ComChangeUser: return mc.requestChangeUser(packetIO) - case mysql.ComStmtPrepare: + case pnet.ComStmtPrepare: return mc.requestPrepare(packetIO) - case mysql.ComStmtSendLongData: + case pnet.ComStmtSendLongData: data = pnet.DumpUint32(data, uint32(mc.prepStmtID)) data = append(data, mc.dataBytes...) - case mysql.ComStmtExecute: + case pnet.ComStmtExecute: return mc.requestExecute(packetIO) - case mysql.ComStmtFetch: + case pnet.ComStmtFetch: return mc.requestFetch(packetIO) - case mysql.ComStmtClose, mysql.ComStmtReset: + case pnet.ComStmtClose, pnet.ComStmtReset: data = pnet.DumpUint32(data, uint32(mc.prepStmtID)) } if err := packetIO.WritePacket(data, true); err != nil { return err } switch mc.cmd { - case mysql.ComQuit, mysql.ComStmtClose, mysql.ComStmtSendLongData: + case pnet.ComQuit, pnet.ComStmtClose, pnet.ComStmtSendLongData: return nil } _, err := packetIO.ReadPacket() @@ -190,7 +189,7 @@ func (mc *mockClient) requestChangeUser(packetIO *pnet.PacketIO) error { func (mc *mockClient) requestPrepare(packetIO *pnet.PacketIO) error { data := make([]byte, 0, len(mc.sql)+1) - data = append(data, mysql.ComStmtPrepare) + data = append(data, pnet.ComStmtPrepare.Byte()) data = append(data, []byte(mc.sql)...) if err := packetIO.WritePacket(data, true); err != nil { return err @@ -223,7 +222,7 @@ func (mc *mockClient) requestPrepare(packetIO *pnet.PacketIO) error { func (mc *mockClient) requestExecute(packetIO *pnet.PacketIO) error { data := make([]byte, 0, len(mc.dataBytes)+5) - data = append(data, mysql.ComStmtExecute) + data = append(data, pnet.ComStmtExecute.Byte()) data = pnet.DumpUint32(data, uint32(mc.prepStmtID)) data = append(data, mc.dataBytes...) if err := packetIO.WritePacket(data, true); err != nil { @@ -234,7 +233,7 @@ func (mc *mockClient) requestExecute(packetIO *pnet.PacketIO) error { func (mc *mockClient) requestFetch(packetIO *pnet.PacketIO) error { data := make([]byte, 0, len(mc.dataBytes)+5) - data = append(data, mysql.ComStmtFetch) + data = append(data, pnet.ComStmtFetch.Byte()) data = pnet.DumpUint32(data, uint32(mc.prepStmtID)) data = append(data, mc.dataBytes...) if err := packetIO.WritePacket(data, true); err != nil { @@ -246,7 +245,7 @@ func (mc *mockClient) requestFetch(packetIO *pnet.PacketIO) error { func (mc *mockClient) requestFieldList(packetIO *pnet.PacketIO) error { data := make([]byte, 0, len(mockCmdStr)+2) - data = append(data, mysql.ComFieldList) + data = append(data, pnet.ComFieldList.Byte()) data = append(data, []byte(mockCmdStr)...) data = append(data, 0x00) data = append(data, []byte(mockCmdStr)...) @@ -281,7 +280,7 @@ func (mc *mockClient) readUntilResultEnd(packetIO *pnet.PacketIO) (pkt []byte, e } func (mc *mockClient) requestProcessInfo(packetIO *pnet.PacketIO) error { - if err := packetIO.WritePacket([]byte{mysql.ComProcessInfo}, true); err != nil { + if err := packetIO.WritePacket([]byte{pnet.ComProcessInfo.Byte()}, true); err != nil { return err } return mc.readResultSet(packetIO) @@ -289,7 +288,7 @@ func (mc *mockClient) requestProcessInfo(packetIO *pnet.PacketIO) error { func (mc *mockClient) query(packetIO *pnet.PacketIO) error { data := make([]byte, 0, len(mc.sql)+1) - data = append(data, mysql.ComQuery) + data = append(data, pnet.ComQuery.Byte()) data = append(data, []byte(mc.sql)...) if err := packetIO.WritePacket(data, true); err != nil { return err diff --git a/pkg/proxy/net/mysql.go b/pkg/proxy/net/mysql.go index 2ee75aa5..781ca17c 100644 --- a/pkg/proxy/net/mysql.go +++ b/pkg/proxy/net/mysql.go @@ -252,7 +252,7 @@ func MakeHandshakeResponse(resp *HandshakeResp) []byte { func MakeChangeUser(username, db, authPlugin string, authData []byte) []byte { length := 1 + len(username) + 1 + len(authData) + 1 + len(db) + 1 data := make([]byte, 0, length) - data = append(data, mysql.ComChangeUser) + data = append(data, ComChangeUser.Byte()) data = append(data, []byte(username)...) data = append(data, 0x00) data = append(data, byte(len(authData)))