Skip to content

Commit

Permalink
This is an automated cherry-pick of pingcap#45764
Browse files Browse the repository at this point in the history
Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
  • Loading branch information
zimulala authored and ti-chi-bot committed Aug 4, 2023
1 parent 48909a1 commit 421b977
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 0 deletions.
5 changes: 5 additions & 0 deletions infoschema/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ go_test(
"tables_test.go",
],
embed = [":infoschema"],
<<<<<<< HEAD
=======
flaky = True,
shard_count = 11,
>>>>>>> b6d92f59038 (infoschema: fix the value of `MaxColumnID` in memDB (#45764))
deps = [
"//config",
"//ddl/placement",
Expand Down
2 changes: 2 additions & 0 deletions infoschema/infoschema.go
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,8 @@ func init() {
for i, c := range tableInfo.Columns {
c.ID = int64(i) + 1
}
tableInfo.MaxColumnID = int64(len(tableInfo.Columns))
tableInfo.MaxIndexID = int64(len(tableInfo.Indices))
}
infoSchemaDB := &model.DBInfo{
ID: dbID,
Expand Down
47 changes: 47 additions & 0 deletions infoschema/infoschema_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -841,3 +841,50 @@ func TestInfoSchemaRenameTable(t *testing.T) {
tk.MustQuery("SELECT count(*) FROM information_schema.TABLES WHERE (TABLE_SCHEMA = 'mysql') AND (TABLE_NAME = 't3');").
Check(testkit.Rows("1"))
}

// TestInfoSchemaCreateTableLike tests the table's column ID and index ID for memory database.
func TestInfoSchemaCreateTableLike(t *testing.T) {
store := testkit.CreateMockStore(t)

tk := testkit.NewTestKit(t, store)
tk.MustExec("use test")
tk.MustExec("create table vi like information_schema.variables_info;")
tk.MustExec("alter table vi modify min_value varchar(32);")
tk.MustExec("create table u like metrics_schema.up;")
tk.MustExec("alter table u modify job int;")
tk.MustExec("create table so like performance_schema.setup_objects;")
tk.MustExec("alter table so modify object_name int;")

tk.MustExec("create table t1 like information_schema.variables_info;")
tk.MustExec("alter table t1 add column c varchar(32);")
is := domain.GetDomain(tk.Session()).InfoSchema()
tbl, err := is.TableByName(model.NewCIStr("test"), model.NewCIStr("t1"))
require.NoError(t, err)
tblInfo := tbl.Meta()
require.Equal(t, tblInfo.Columns[8].Name.O, "c")
require.Equal(t, tblInfo.Columns[8].ID, int64(9))
tk.MustExec("alter table t1 add index idx(c);")
is = domain.GetDomain(tk.Session()).InfoSchema()
tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t1"))
require.NoError(t, err)
tblInfo = tbl.Meta()
require.Equal(t, tblInfo.Indices[0].Name.O, "idx")
require.Equal(t, tblInfo.Indices[0].ID, int64(1))

// metrics_schema
tk.MustExec("create table t2 like metrics_schema.up;")
tk.MustExec("alter table t2 add column c varchar(32);")
is = domain.GetDomain(tk.Session()).InfoSchema()
tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t2"))
require.NoError(t, err)
tblInfo = tbl.Meta()
require.Equal(t, tblInfo.Columns[4].Name.O, "c")
require.Equal(t, tblInfo.Columns[4].ID, int64(5))
tk.MustExec("alter table t2 add index idx(c);")
is = domain.GetDomain(tk.Session()).InfoSchema()
tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t2"))
require.NoError(t, err)
tblInfo = tbl.Meta()
require.Equal(t, tblInfo.Indices[0].Name.O, "idx")
require.Equal(t, tblInfo.Indices[0].ID, int64(1))
}
2 changes: 2 additions & 0 deletions infoschema/metrics_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ func init() {
tableInfo.Comment = def.Comment
tableID++
metricTables = append(metricTables, tableInfo)
tableInfo.MaxColumnID = int64(len(tableInfo.Columns))
tableInfo.MaxIndexID = int64(len(tableInfo.Indices))
}
dbInfo := &model.DBInfo{
ID: dbID,
Expand Down

0 comments on commit 421b977

Please sign in to comment.