Skip to content

Commit

Permalink
infoschema: fix the value of MaxColumnID in memDB (#45764)
Browse files Browse the repository at this point in the history
close #45744
  • Loading branch information
zimulala committed Aug 4, 2023
1 parent b38868f commit b6d92f5
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion infoschema/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ go_test(
],
embed = [":infoschema"],
flaky = True,
shard_count = 10,
shard_count = 11,
deps = [
"//ddl/placement",
"//domain",
Expand Down
2 changes: 2 additions & 0 deletions infoschema/infoschema.go
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,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 @@ -842,3 +842,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 b6d92f5

Please sign in to comment.