diff --git a/cdc/redo/common/util.go b/cdc/redo/common/util.go index fdfd4478104..e97c70ebc56 100644 --- a/cdc/redo/common/util.go +++ b/cdc/redo/common/util.go @@ -58,7 +58,6 @@ var InitS3storage = func(ctx context.Context, uri url.URL) (storage.ExternalStor s3storage, err := storage.New(ctx, backend, &storage.ExternalStorageOptions{ SendCredentials: false, HTTPClient: nil, - SkipCheckPath: true, }) if err != nil { return nil, cerror.WrapError(cerror.ErrS3StorageInitialize, err) diff --git a/cdc/sink/cdclog/s3.go b/cdc/sink/cdclog/s3.go index dc0e8da0892..9cca2b8c7dc 100644 --- a/cdc/sink/cdclog/s3.go +++ b/cdc/sink/cdclog/s3.go @@ -376,7 +376,6 @@ func NewS3Sink(ctx context.Context, sinkURI *url.URL, errCh chan error) (*s3Sink } s3storage, err := storage.New(ctx, backend, &storage.ExternalStorageOptions{ SendCredentials: false, - SkipCheckPath: true, HTTPClient: nil, }) if err != nil { diff --git a/dm/dm/portal/api.go b/dm/dm/portal/api.go index e5eb688456e..5359f9b4315 100644 --- a/dm/dm/portal/api.go +++ b/dm/dm/portal/api.go @@ -20,6 +20,7 @@ import ( "encoding/json" "fmt" "io" + "net" "net/http" "os" "path" @@ -589,7 +590,8 @@ func generateTaskFileName(taskName string) string { // openDB opens a mysql connection FD. func openDB(cfg DBConfig, timeout int) (*sql.DB, error) { - dbDSN := fmt.Sprintf("%s:%s@tcp(%s:%d)/?charset=utf8mb4&timeout=%ds", cfg.User, cfg.Password, cfg.Host, cfg.Port, timeout) + hostPort := net.JoinHostPort(cfg.Host, strconv.Itoa(cfg.Port)) + dbDSN := fmt.Sprintf("%s:%s@tcp(%s)/?charset=utf8mb4&timeout=%ds", cfg.User, cfg.Password, hostPort, timeout) dbConn, err := sql.Open("mysql", dbDSN) if err != nil { diff --git a/dm/dm/portal/api_test.go b/dm/dm/portal/api_test.go index c167b801156..f6eb05d0ca1 100644 --- a/dm/dm/portal/api_test.go +++ b/dm/dm/portal/api_test.go @@ -15,7 +15,6 @@ package portal import ( "bytes" - "database/sql" "encoding/json" "io" "mime/multipart" @@ -26,15 +25,12 @@ import ( "strings" "testing" - sqlmock "github.com/DATA-DOG/go-sqlmock" "github.com/go-sql-driver/mysql" . "github.com/pingcap/check" bf "github.com/pingcap/tidb-tools/pkg/binlog-filter" "github.com/pingcap/tidb-tools/pkg/filter" router "github.com/pingcap/tidb-tools/pkg/table-router" "github.com/pingcap/tidb/br/pkg/mock" - - "github.com/pingcap/tiflow/dm/dm/config" ) var _ = Suite(&testPortalSuite{}) @@ -155,82 +151,6 @@ func (t *testPortalSuite) initTaskCfg() { } } -func (t *testPortalSuite) TestCheck(c *C) { - wrongDBCfg := config.GetDBConfigForTest() - wrongDBCfg.User = "wrong" - wrongDBCfg.Port = t.mockClusterPort - dbCfgBytes := getTestDBCfgBytes(c, &wrongDBCfg) - req := httptest.NewRequest("POST", "/check", bytes.NewReader(dbCfgBytes)) - resp := httptest.NewRecorder() - - // will connection to database failed - t.portalHandler.Check(resp, req) - c.Log("resp", resp) - c.Assert(resp.Code, Equals, http.StatusBadRequest) - - checkResult := &CheckResult{} - err := readJSON(resp.Body, checkResult) - c.Assert(err, IsNil) - c.Assert(checkResult.Result, Equals, failed) - c.Assert(checkResult.Error, Matches, "Error 1045: Access denied for user 'wrong'.*") - - // don't need connection to database, and will return StatusOK - getDBConnFunc = t.getMockDB - defer func() { - getDBConnFunc = getDBConnFromReq - }() - - resp = httptest.NewRecorder() - t.portalHandler.Check(resp, req) - c.Assert(resp.Code, Equals, http.StatusOK) - - err = readJSON(resp.Body, checkResult) - c.Assert(err, IsNil) - c.Assert(checkResult.Result, Equals, success) - c.Assert(checkResult.Error, Equals, "") -} - -func (t *testPortalSuite) TestGetSchemaInfo(c *C) { - dbCfg := config.GetDBConfigForTest() - dbCfg.User = "wrong" - dbCfg.Port = t.mockClusterPort - dbCfgBytes := getTestDBCfgBytes(c, &dbCfg) - req := httptest.NewRequest("POST", "/schema", bytes.NewReader(dbCfgBytes)) - resp := httptest.NewRecorder() - - t.portalHandler.GetSchemaInfo(resp, req) - c.Log("resp", resp) - c.Assert(resp.Code, Equals, http.StatusBadRequest) - - schemaInfoResult := new(SchemaInfoResult) - err := readJSON(resp.Body, schemaInfoResult) - c.Assert(err, IsNil) - c.Assert(schemaInfoResult.Result, Equals, failed) - c.Assert(schemaInfoResult.Error, Matches, "Error 1045: Access denied for user 'wrong'.*") - c.Assert(schemaInfoResult.Tables, IsNil) - - getDBConnFunc = t.getMockDB - defer func() { - getDBConnFunc = getDBConnFromReq - }() - - resp = httptest.NewRecorder() - t.portalHandler.GetSchemaInfo(resp, req) - c.Assert(resp.Code, Equals, http.StatusOK) - - err = readJSON(resp.Body, schemaInfoResult) - c.Assert(err, IsNil) - c.Assert(schemaInfoResult.Result, Equals, success) - c.Assert(schemaInfoResult.Error, Equals, "") - c.Assert(schemaInfoResult.Tables, HasLen, len(t.allTables)-1) - for i, schemaTables := range schemaInfoResult.Tables { - c.Assert(schemaTables.Schema, Equals, t.allTables[i].Schema) - for j, table := range schemaTables.Tables { - c.Assert(table, Equals, t.allTables[i].Tables[j]) - } - } -} - func (t *testPortalSuite) TestGenerateAndDownloadAndAnalyzeConfig(c *C) { t.initTaskCfg() @@ -322,16 +242,6 @@ func (t *testPortalSuite) TestAnalyzeRuleName(c *C) { } } -func (t *testPortalSuite) getMockDB(req *http.Request, timeout int) (*sql.DB, string, error) { - db, mock, err := sqlmock.New() - if err != nil { - return nil, "", err - } - t.mockSchemaInfo(mock) - - return db, "mock", nil -} - func (t *testPortalSuite) TestAdjustConfig(c *C) { c.Assert(adjustConfig(t.taskConfig), IsNil) @@ -385,30 +295,8 @@ func (t *testPortalSuite) TestGenerateMydumperCfgName(c *C) { c.Assert(dumpCfgName, Equals, "source-1.dump") } -func (t *testPortalSuite) mockSchemaInfo(mock sqlmock.Sqlmock) { - schemas := sqlmock.NewRows([]string{"Database"}) - for _, tables := range t.allTables { - schemas.AddRow(tables.Schema) - } - mock.ExpectQuery("SHOW DATABASES").WillReturnRows(schemas) - - for _, tables := range t.allTables { - tablesResult := sqlmock.NewRows([]string{"Tables_in_" + tables.Schema, "Table_type"}) - for _, table := range tables.Tables { - tablesResult.AddRow(table, "BASE TABLE") - } - mock.ExpectQuery("SHOW FULL TABLES").WillReturnRows(tablesResult) - } -} - func (t *testPortalSuite) TestGenerateTaskFileName(c *C) { taskName := "test" fileName := generateTaskFileName(taskName) c.Assert(fileName, Equals, "test-task.yaml") } - -func getTestDBCfgBytes(c *C, dbCfg *config.DBConfig) []byte { - dbCfgBytes, err := json.Marshal(dbCfg) - c.Assert(err, IsNil) - return dbCfgBytes -} diff --git a/dm/pkg/conn/basedb.go b/dm/pkg/conn/basedb.go index f9f02b1ca9a..0bfc49e97db 100644 --- a/dm/pkg/conn/basedb.go +++ b/dm/pkg/conn/basedb.go @@ -18,6 +18,7 @@ import ( "database/sql" "errors" "fmt" + "net" "net/url" "strconv" "sync" @@ -56,8 +57,9 @@ func init() { func (d *DefaultDBProviderImpl) Apply(config *config.DBConfig) (*BaseDB, error) { // maxAllowedPacket=0 can be used to automatically fetch the max_allowed_packet variable from server on every connection. // https://github.com/go-sql-driver/mysql#maxallowedpacket - dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/?charset=utf8mb4&interpolateParams=true&maxAllowedPacket=0", - config.User, config.Password, config.Host, config.Port) + hostPort := net.JoinHostPort(config.Host, strconv.Itoa(config.Port)) + dsn := fmt.Sprintf("%s:%s@tcp(%s)/?charset=utf8mb4&interpolateParams=true&maxAllowedPacket=0", + config.User, config.Password, hostPort) doFuncInClose := func() {} if config.Security != nil { diff --git a/dm/pkg/conn/basedb_test.go b/dm/pkg/conn/basedb_test.go index d7216313df4..81bb421c736 100644 --- a/dm/pkg/conn/basedb_test.go +++ b/dm/pkg/conn/basedb_test.go @@ -55,6 +55,7 @@ func TestGetBaseConn(t *testing.T) { ids = append(ids, id) } require.Equal(t, []int{1}, ids) + require.NoError(t, rows.Err()) mock.ExpectBegin() mock.ExpectExec("create database test").WillReturnResult(sqlmock.NewResult(1, 1)) diff --git a/dm/syncer/ddl_test.go b/dm/syncer/ddl_test.go index a07b5eb4b7e..21f3503e64b 100644 --- a/dm/syncer/ddl_test.go +++ b/dm/syncer/ddl_test.go @@ -17,17 +17,17 @@ import ( "context" "errors" "fmt" - "strconv" + "reflect" "strings" "github.com/DATA-DOG/go-sqlmock" - "github.com/go-sql-driver/mysql" . "github.com/pingcap/check" "github.com/pingcap/tidb-tools/pkg/filter" router "github.com/pingcap/tidb-tools/pkg/table-router" "github.com/pingcap/tidb/br/pkg/mock" "github.com/pingcap/tidb/parser" "github.com/pingcap/tidb/parser/ast" + "github.com/pingcap/tidb/server" "go.uber.org/zap" "github.com/pingcap/tiflow/dm/dm/config" @@ -406,6 +406,18 @@ func (s *testDDLSuite) TestResolveGeneratedColumnSQL(c *C) { } } +// in TiDB 5.3 mock cluster has bug, it doesn't set DSN correctly +// but in newer version of DM, we rewrite the test and using our own mock cluster, +// see https://github.com/pingcap/tiflow/blob/45bee3c178920e81d95086e89dc0b896345d8512/dm/syncer/ddl_test.go#L452 +// so in here, we'll not try to fix bug in TiDB 5.3 and just extract the port +// using reflection. +func extractClusterPort(s *server.Server) int { + v := reflect.ValueOf(s) + field := v.Elem().FieldByName("cfg") + portVal := field.Elem().FieldByName("Port") + return int(portVal.Uint()) +} + func (s *testDDLSuite) TestResolveOnlineDDL(c *C) { cases := []struct { sql string @@ -447,12 +459,8 @@ func (s *testDDLSuite) TestResolveOnlineDDL(c *C) { cluster, err := mock.NewCluster() c.Assert(err, IsNil) c.Assert(cluster.Start(), IsNil) - mysqlConfig, err := mysql.ParseDSN(cluster.DSN) - c.Assert(err, IsNil) - mockClusterPort, err := strconv.Atoi(strings.Split(mysqlConfig.Addr, ":")[1]) - c.Assert(err, IsNil) dbCfg := config.GetDBConfigForTest() - dbCfg.Port = mockClusterPort + dbCfg.Port = extractClusterPort(cluster.Server) dbCfg.Password = "" cfg := s.newSubTaskCfg(dbCfg) @@ -530,12 +538,8 @@ func (s *testDDLSuite) TestMistakeOnlineDDLRegex(c *C) { cluster, err := mock.NewCluster() c.Assert(err, IsNil) c.Assert(cluster.Start(), IsNil) - mysqlConfig, err := mysql.ParseDSN(cluster.DSN) - c.Assert(err, IsNil) - mockClusterPort, err := strconv.Atoi(strings.Split(mysqlConfig.Addr, ":")[1]) - c.Assert(err, IsNil) dbCfg := config.GetDBConfigForTest() - dbCfg.Port = mockClusterPort + dbCfg.Port = extractClusterPort(cluster.Server) dbCfg.Password = "" cfg := s.newSubTaskCfg(dbCfg) for _, ca := range cases { diff --git a/go.mod b/go.mod index c99aff996ee..a36a8f88408 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/frankban/quicktest v1.11.1 // indirect github.com/getkin/kin-openapi v0.79.0 github.com/gin-gonic/gin v1.7.0 - github.com/go-mysql-org/go-mysql v1.4.1-0.20211217061939-06f932768788 + github.com/go-mysql-org/go-mysql v1.6.1-0.20220718092400-c855c26b37bd github.com/go-sql-driver/mysql v1.6.0 github.com/gogo/gateway v1.1.0 github.com/gogo/protobuf v1.3.2 @@ -33,7 +33,7 @@ require ( github.com/golang/protobuf v1.5.2 github.com/google/btree v1.0.0 github.com/google/go-cmp v0.5.6 - github.com/google/uuid v1.1.2 + github.com/google/uuid v1.3.0 github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 @@ -52,11 +52,11 @@ require ( github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712 github.com/pingcap/errors v0.11.5-0.20210513014640-40f9a1999b3b github.com/pingcap/failpoint v0.0.0-20210316064728-7acb0f0a3dfd - github.com/pingcap/kvproto v0.0.0-20211011060348-d957056f1551 + github.com/pingcap/kvproto v0.0.0-20220614124712-cd832493ec73 github.com/pingcap/log v0.0.0-20210906054005-afc726e70354 - github.com/pingcap/tidb v1.1.0-beta.0.20211111080905-76b00f3ec11e + github.com/pingcap/tidb v1.1.0-beta.0.20220727103312-d674b6486c83 github.com/pingcap/tidb-tools v5.2.2-0.20211019062242-37a8bef2fa17+incompatible - github.com/pingcap/tidb/parser v0.0.0-20211111080905-76b00f3ec11e + github.com/pingcap/tidb/parser v0.0.0-20220727103312-d674b6486c83 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.7.1 github.com/prometheus/client_model v0.2.0 @@ -74,8 +74,8 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965 github.com/tidwall/gjson v1.9.1 github.com/tidwall/sjson v1.2.2 - github.com/tikv/client-go/v2 v2.0.0-alpha.0.20211029104011-2fd3841894de - github.com/tikv/pd v1.1.0-beta.0.20211029083450-e65f0c55b6ae + github.com/tikv/client-go/v2 v2.0.0-alpha.0.20220614073506-266c33cb2c82 + github.com/tikv/pd v1.1.0-beta.0.20211104095303-69c86d05d379 github.com/tinylib/msgp v1.1.0 github.com/uber-go/atomic v1.4.0 github.com/unrolled/render v1.0.1 diff --git a/go.sum b/go.sum index 2343c8ec475..be9533e1ed0 100644 --- a/go.sum +++ b/go.sum @@ -319,8 +319,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-mysql-org/go-mysql v1.4.1-0.20211217061939-06f932768788 h1:0IsP4ViNmA7ZElbCE4/lINdTppdw3jdcAiJaPDyeHx8= -github.com/go-mysql-org/go-mysql v1.4.1-0.20211217061939-06f932768788/go.mod h1:3lFZKf7l95Qo70+3XB2WpiSf9wu2s3na3geLMaIIrqQ= +github.com/go-mysql-org/go-mysql v1.6.1-0.20220718092400-c855c26b37bd h1:kgQrwjBbmoOZzzbF1CDDIYeuBfLA+wA10DgQl6J5qZ8= +github.com/go-mysql-org/go-mysql v1.6.1-0.20220718092400-c855c26b37bd/go.mod h1:GX0clmylJLdZEYAojPCDTCvwZxbTBrke93dV55715u0= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -471,8 +471,9 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -798,8 +799,9 @@ github.com/pingcap/kvproto v0.0.0-20210219064844-c1844a4775d6/go.mod h1:IOdRDPLy github.com/pingcap/kvproto v0.0.0-20210805052247-76981389e818/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/kvproto v0.0.0-20210819164333-bd5706b9d9f2/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/kvproto v0.0.0-20210915062418-0f5764a128ad/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= -github.com/pingcap/kvproto v0.0.0-20211011060348-d957056f1551 h1:aRx2l2TAeYNPPUc+lk5dEFCXfUGxR/C2fbt/YA5nqiQ= -github.com/pingcap/kvproto v0.0.0-20211011060348-d957056f1551/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= +github.com/pingcap/kvproto v0.0.0-20211029081837-3c7bd947cf9b/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= +github.com/pingcap/kvproto v0.0.0-20220614124712-cd832493ec73 h1:2WjfdS1tcy4pSyQeZrany70ONg/qdBvfQ8EZMek+3fE= +github.com/pingcap/kvproto v0.0.0-20220614124712-cd832493ec73/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20200511115504-543df19646ad/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20201112100606-8f1e84a3abc8/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= @@ -814,21 +816,22 @@ github.com/pingcap/sysutil v0.0.0-20210315073920-cc0985d983a3/go.mod h1:tckvA041 github.com/pingcap/sysutil v0.0.0-20210730114356-fcd8a63f68c5 h1:7rvAtZe/ZUzOKzgriNPQoBNvleJXBk4z7L3Z47+tS98= github.com/pingcap/sysutil v0.0.0-20210730114356-fcd8a63f68c5/go.mod h1:XsOaV712rUk63aOEKYP9PhXTIE3FMNHmC2r1wX5wElY= github.com/pingcap/tidb v1.1.0-beta.0.20211023132847-efa94595c071/go.mod h1:Ci7ABF58a4jn6YtaHi7655jP409edqC2JxWWFRqOubg= -github.com/pingcap/tidb v1.1.0-beta.0.20211111080905-76b00f3ec11e h1:ZCT++ksXnkoGV14159vfEKcfrGJunfvjtAf+3JhlYTQ= -github.com/pingcap/tidb v1.1.0-beta.0.20211111080905-76b00f3ec11e/go.mod h1:MGT/AUgZBwr8sJ7KUZIsHaxUme9nzAfQYMkUclWr26s= +github.com/pingcap/tidb v1.1.0-beta.0.20220727103312-d674b6486c83 h1:TubE4AV83MgBta/HIQlvhKh1hNA3WyCXDJXK8gSd/9Y= +github.com/pingcap/tidb v1.1.0-beta.0.20220727103312-d674b6486c83/go.mod h1:AMaxicYKOuIbmpyzb+731/kzLq8wxDPlYClgksp5G4E= github.com/pingcap/tidb-dashboard v0.0.0-20210312062513-eef5d6404638/go.mod h1:OzFN8H0EDMMqeulPhPMw2i2JaiZWOKFQ7zdRPhENNgo= github.com/pingcap/tidb-dashboard v0.0.0-20210716172320-2226872e3296/go.mod h1:OCXbZTBTIMRcIt0jFsuCakZP+goYRv6IjawKbwLS2TQ= github.com/pingcap/tidb-dashboard v0.0.0-20211008050453-a25c25809529/go.mod h1:OCXbZTBTIMRcIt0jFsuCakZP+goYRv6IjawKbwLS2TQ= +github.com/pingcap/tidb-dashboard v0.0.0-20211031170437-08e58c069a2a/go.mod h1:OCXbZTBTIMRcIt0jFsuCakZP+goYRv6IjawKbwLS2TQ= github.com/pingcap/tidb-tools v5.0.3+incompatible/go.mod h1:XGdcy9+yqlDSEMTpOXnwf3hiTeqrV6MN/u1se9N8yIM= github.com/pingcap/tidb-tools v5.2.2-0.20211019062242-37a8bef2fa17+incompatible h1:c7+izmker91NkjkZ6FgTlmD4k1A5FLOAq+li6Ki2/GY= github.com/pingcap/tidb-tools v5.2.2-0.20211019062242-37a8bef2fa17+incompatible/go.mod h1:XGdcy9+yqlDSEMTpOXnwf3hiTeqrV6MN/u1se9N8yIM= github.com/pingcap/tidb/parser v0.0.0-20211011031125-9b13dc409c5e/go.mod h1:e1MGCA9Sg3T8jid8PKAEq5eYVuMMCq4n8gJ+Kqp4Plg= github.com/pingcap/tidb/parser v0.0.0-20211023132847-efa94595c071/go.mod h1:e1MGCA9Sg3T8jid8PKAEq5eYVuMMCq4n8gJ+Kqp4Plg= -github.com/pingcap/tidb/parser v0.0.0-20211111080905-76b00f3ec11e h1:rqfPYqKz7NlJ7fLEIOG4lkVcpcuwzuE6n5V1vVdBr9g= -github.com/pingcap/tidb/parser v0.0.0-20211111080905-76b00f3ec11e/go.mod h1:MAa22tagoj7nv5b1NBcxPkc5CiUNhqj1wuSQnw4f9WE= +github.com/pingcap/tidb/parser v0.0.0-20220727103312-d674b6486c83 h1:atohfY7Oh2yfctYPXi14T7IiNholY4jVjWksLBiPTa4= +github.com/pingcap/tidb/parser v0.0.0-20220727103312-d674b6486c83/go.mod h1:MAa22tagoj7nv5b1NBcxPkc5CiUNhqj1wuSQnw4f9WE= github.com/pingcap/tipb v0.0.0-20211008080435-3fd327dfce0e/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= -github.com/pingcap/tipb v0.0.0-20211105090418-71142a4d40e3 h1:xnp/Qkk5gELlB8TaY6oro0JNXMBXTafNVxU/vbrNU8I= -github.com/pingcap/tipb v0.0.0-20211105090418-71142a4d40e3/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= +github.com/pingcap/tipb v0.0.0-20220222072611-9b6db18731e5 h1:phuvcXfl1Rr+fvilrMZmsCk9eL1NEUx2GTq2DGzL/1M= +github.com/pingcap/tipb v0.0.0-20220222072611-9b6db18731e5/go.mod h1:A7mrd7WHBl1o63LE2bIBGEJMTNWXqhgmYiOvMLxozfs= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -892,7 +895,6 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -988,12 +990,13 @@ github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhso github.com/tidwall/sjson v1.2.2 h1:H1Llj/C9G+BoUN2DsybLHjWvr9dx4Uazavf0sXQ+rOs= github.com/tidwall/sjson v1.2.2/go.mod h1:jmW2RZpbKuExPFUHeFSBMiovT9ZyOziEHDRkbsdp0B0= github.com/tikv/client-go/v2 v2.0.0-alpha.0.20211011083157-49c8dd23f1f0/go.mod h1:00plYwQsQ5kBUmafHO+JkjznGgFaBokMZl82TZIbsQk= -github.com/tikv/client-go/v2 v2.0.0-alpha.0.20211029104011-2fd3841894de h1:DKo2grkDpP9hQHuYbkAz4yxMS1742qBkUd4kwyZK2As= -github.com/tikv/client-go/v2 v2.0.0-alpha.0.20211029104011-2fd3841894de/go.mod h1:gdd4S4uS3/apOF9iet/DIYUdr6J4WzGLWyDgn6SMtg0= +github.com/tikv/client-go/v2 v2.0.0-alpha.0.20220614073506-266c33cb2c82 h1:+/JRZpY+9VMVxurapYe0yXDToHHzyWS9W74s60wE10Q= +github.com/tikv/client-go/v2 v2.0.0-alpha.0.20220614073506-266c33cb2c82/go.mod h1:gdd4S4uS3/apOF9iet/DIYUdr6J4WzGLWyDgn6SMtg0= github.com/tikv/pd v1.1.0-beta.0.20210323121136-78679e5e209d/go.mod h1:Jw9KG11C/23Rr7DW4XWQ7H5xOgGZo6DFL1OKAF4+Igw= github.com/tikv/pd v1.1.0-beta.0.20210818082359-acba1da0018d/go.mod h1:rammPjeZgpvfrQRPkijcx8tlxF1XM5+m6kRXrkDzCAA= -github.com/tikv/pd v1.1.0-beta.0.20211029083450-e65f0c55b6ae h1:PmnkhiOopgMZYDQ7Htj1kt/zwW4MEOUL+Dem6WLZISY= github.com/tikv/pd v1.1.0-beta.0.20211029083450-e65f0c55b6ae/go.mod h1:varH0IE0jJ9E9WN2Ei/N6pajMlPkcXdDEf7f5mmsUVQ= +github.com/tikv/pd v1.1.0-beta.0.20211104095303-69c86d05d379 h1:nFm1jQDz1iRktoyV2SyM5zVk6+PJHQNunJZ7ZJcqzAo= +github.com/tikv/pd v1.1.0-beta.0.20211104095303-69c86d05d379/go.mod h1:y+09hAUXJbrd4c0nktL74zXDDuD7atGtfOKxL90PCOE= github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tklauser/go-sysconf v0.3.4 h1:HT8SVixZd3IzLdfs/xlpq0jeSfTX57g1v6wB1EuzV7M=