diff --git a/ddl/index.go b/ddl/index.go index b391dab5fc6e2..c86232b15871f 100644 --- a/ddl/index.go +++ b/ddl/index.go @@ -174,6 +174,10 @@ func getIndexColumnLength(col *model.ColumnInfo, colLen int) (int, error) { } func buildIndexInfo(tblInfo *model.TableInfo, indexName model.CIStr, idxColNames []*ast.IndexColName, state model.SchemaState) (*model.IndexInfo, error) { + if err := checkTooLongIndex(indexName); err != nil { + return nil, errors.Trace(err) + } + idxColumns, err := buildIndexColumns(tblInfo.Columns, idxColNames) if err != nil { return nil, errors.Trace(err) diff --git a/executor/ddl_test.go b/executor/ddl_test.go index 3c6a3aa269770..abaeff4918a4f 100644 --- a/executor/ddl_test.go +++ b/executor/ddl_test.go @@ -556,6 +556,11 @@ func (s *testSuite6) TestTooLargeIdentifierLength(c *C) { tk.MustExec(fmt.Sprintf("drop index %s on t", indexName1)) _, err = tk.Exec(fmt.Sprintf("create index %s on t(c)", indexName2)) c.Assert(err.Error(), Equals, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", indexName2)) + + // for create table with index. + tk.MustExec("drop table t;") + _, err = tk.Exec(fmt.Sprintf("create table t(c int, index %s(c));", indexName2)) + c.Assert(err.Error(), Equals, fmt.Sprintf("[ddl:1059]Identifier name '%s' is too long", indexName2)) } func (s *testSuite8) TestShardRowIDBits(c *C) {