Skip to content

Commit

Permalink
schematracker(dm): Increase max-index-length config for dm schema tra…
Browse files Browse the repository at this point in the history
…cker (#11465) (#11627)

close #11459
  • Loading branch information
ti-chi-bot authored Sep 26, 2024
1 parent 3949040 commit bd12266
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
6 changes: 6 additions & 0 deletions dm/pkg/schema/tracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"sync"

"github.com/pingcap/errors"
tidbConfig "github.com/pingcap/tidb/pkg/config"
"github.com/pingcap/tidb/pkg/ddl"
"github.com/pingcap/tidb/pkg/ddl/schematracker"
"github.com/pingcap/tidb/pkg/executor"
Expand Down Expand Up @@ -132,6 +133,11 @@ func (tr *Tracker) Init(

logger = logger.WithFields(zap.String("component", "schema-tracker"), zap.String("task", task))

// set max-index-length to maximum allowable (3072*4)
tidbConfig.UpdateGlobal(func(conf *tidbConfig.Config) {
conf.MaxIndexLength = 12288
})

upTracker := schematracker.NewSchemaTracker(lowerCaseTableNames)
dsSession := mock.NewContext()
dsSession.GetSessionVars().StrictSQLMode = false
Expand Down
30 changes: 30 additions & 0 deletions dm/pkg/schema/tracker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,36 @@ func TestGetDownStreamIndexInfo(t *testing.T) {
require.NotNil(t, dti.WhereHandle.UniqueNotNullIdx)
}

func TestGetDownStreamIndexInfoExceedsMaxIndexLength(t *testing.T) {
// origin table info
p := parser.New()
se := timock.NewContext()
ctx := context.Background()
node, err := p.ParseOneStmt("create table t(a int, b int, c varchar(10))", "utf8mb4", "utf8mb4_bin")
require.NoError(t, err)
oriTi, err := ddl.MockTableInfo(se, node.(*ast.CreateTableStmt), 1)
require.NoError(t, err)

// tracker and sqlmock
dbConn, mock := mockBaseConn(t)
tracker, err := NewTestTracker(ctx, "test-tracker", dbConn, dlog.L())
require.NoError(t, err)
defer tracker.Close()

mock.ExpectBegin()
mock.ExpectExec(fmt.Sprintf("SET SESSION SQL_MODE = '%s'", mysql.DefaultSQLMode)).WillReturnResult(sqlmock.NewResult(0, 0))
mock.ExpectCommit()

tableID := "`test`.`test`"

mock.ExpectQuery("SHOW CREATE TABLE " + tableID).WillReturnRows(
sqlmock.NewRows([]string{"Table", "Create Table"}).
AddRow("test", "create table t(a bigint(20), b varbinary(767), c varbinary(767), d varbinary(767), e varbinary(767), primary key(a), key(b, c, d, e, a))"))
dti, err := tracker.GetDownStreamTableInfo(tcontext.Background(), tableID, oriTi)
require.NoError(t, err)
require.NotNil(t, dti.WhereHandle.UniqueNotNullIdx)
}

func TestReTrackDownStreamIndex(t *testing.T) {
// origin table info
p := parser.New()
Expand Down

0 comments on commit bd12266

Please sign in to comment.