diff --git a/dm/pkg/schema/tracker.go b/dm/pkg/schema/tracker.go index eb9325ba743..631fcce9f85 100644 --- a/dm/pkg/schema/tracker.go +++ b/dm/pkg/schema/tracker.go @@ -21,6 +21,7 @@ import ( "sync" "github.com/pingcap/errors" +<<<<<<< HEAD "github.com/pingcap/tidb/ddl" "github.com/pingcap/tidb/ddl/schematracker" "github.com/pingcap/tidb/executor" @@ -36,6 +37,25 @@ import ( "github.com/pingcap/tidb/util/filter" "github.com/pingcap/tidb/util/mock" "github.com/pingcap/tidb/util/sqlexec" +======= + "github.com/pingcap/tidb/pkg/ddl" + "github.com/pingcap/tidb/pkg/ddl/schematracker" + "github.com/pingcap/tidb/pkg/executor" + "github.com/pingcap/tidb/pkg/infoschema" + "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta/autoid" + "github.com/pingcap/tidb/pkg/parser" + "github.com/pingcap/tidb/pkg/parser/ast" + "github.com/pingcap/tidb/pkg/parser/model" + "github.com/pingcap/tidb/pkg/parser/mysql" + "github.com/pingcap/tidb/pkg/sessionctx" + "github.com/pingcap/tidb/pkg/sessionctx/variable" + "github.com/pingcap/tidb/pkg/util/chunk" + "github.com/pingcap/tidb/pkg/util/filter" + "github.com/pingcap/tidb/pkg/util/mock" + "github.com/pingcap/tidb/pkg/util/sqlexec" + "github.com/pingcap/tiflow/dm/pkg/conn" +>>>>>>> 2e729efee1 (dm: set enable cluster index to off for downstream tracker (#10346)) tcontext "github.com/pingcap/tiflow/dm/pkg/context" fr "github.com/pingcap/tiflow/dm/pkg/func-rollback" "github.com/pingcap/tiflow/dm/pkg/log" @@ -464,6 +484,17 @@ func (dt *downstreamTracker) getTableInfoByCreateStmt(tctx *tcontext.Context, ta return nil, dmterror.ErrSchemaTrackerInvalidCreateTableStmt.Delegate(err, createStr) } + // suppress ErrTooLongKey + strictSQLModeBackup := dt.se.GetSessionVars().StrictSQLMode + dt.se.GetSessionVars().StrictSQLMode = false + // support drop PK + enableClusteredIndexBackup := dt.se.GetSessionVars().EnableClusteredIndex + dt.se.GetSessionVars().EnableClusteredIndex = variable.ClusteredIndexDefModeOff + defer func() { + dt.se.GetSessionVars().StrictSQLMode = strictSQLModeBackup + dt.se.GetSessionVars().EnableClusteredIndex = enableClusteredIndexBackup + }() + ti, err := ddl.BuildTableInfoWithStmt(dt.se, stmtNode.(*ast.CreateTableStmt), mysql.DefaultCharset, "", nil) if err != nil { return nil, dmterror.ErrSchemaTrackerCannotMockDownstreamTable.Delegate(err, createStr) diff --git a/dm/pkg/schema/tracker_test.go b/dm/pkg/schema/tracker_test.go index 373c9b841db..3b013184535 100644 --- a/dm/pkg/schema/tracker_test.go +++ b/dm/pkg/schema/tracker_test.go @@ -613,7 +613,7 @@ func TestGetDownStreamIndexInfo(t *testing.T) { mock.ExpectQuery("SHOW CREATE TABLE " + tableID).WillReturnRows( sqlmock.NewRows([]string{"Table", "Create Table"}). - AddRow("test", "create table t(a int primary key, b int, c varchar(20000), key(c(20000)))")) + AddRow("test", "create table t(a int, b int, c varchar(20000), primary key(a, b), key(c(20000)))/*!90000 SHARD_ROW_ID_BITS=6 */")) dti, err := tracker.GetDownStreamTableInfo(tcontext.Background(), tableID, oriTi) require.NoError(t, err) require.NotNil(t, dti.WhereHandle.UniqueNotNullIdx)