From b0aed0d7e9b08497c0409540638f9393061e13c5 Mon Sep 17 00:00:00 2001 From: Lynn Date: Mon, 28 Oct 2019 13:07:13 +0800 Subject: [PATCH] ddl, executor: limit the length of index name --- ddl/index.go | 4 ++++ executor/ddl_test.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/ddl/index.go b/ddl/index.go index ebcffe21ea91..2260fd0e803c 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 3e009fed443a..d594945c64bc 100644 --- a/executor/ddl_test.go +++ b/executor/ddl_test.go @@ -616,6 +616,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) {