Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

infoschema: fix the value of MaxColumnID in memDB #45764

Merged
merged 2 commits into from
Aug 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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