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 fe7bcf1 commit 1037e63
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 0 deletions.
99 changes: 99 additions & 0 deletions infoschema/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

go_library(
name = "infoschema",
srcs = [
"builder.go",
"cache.go",
"cluster.go",
"error.go",
"infoschema.go",
"metric_table_def.go",
"metrics_schema.go",
"tables.go",
],
importpath = "github.com/pingcap/tidb/infoschema",
visibility = ["//visibility:public"],
deps = [
"//config",
"//ddl/placement",
"//ddl/resourcegroup",
"//domain/infosync",
"//errno",
"//infoschema/metrics",
"//kv",
"//meta",
"//meta/autoid",
"//parser/charset",
"//parser/model",
"//parser/mysql",
"//parser/terror",
"//privilege",
"//session/txninfo",
"//sessionctx",
"//sessionctx/variable",
"//table",
"//table/tables",
"//types",
"//util",
"//util/dbterror",
"//util/deadlockhistory",
"//util/domainutil",
"//util/execdetails",
"//util/logutil",
"//util/mathutil",
"//util/mock",
"//util/pdapi",
"//util/sem",
"//util/set",
"//util/sqlexec",
"//util/stmtsummary",
"@com_github_ngaut_pools//:pools",
"@com_github_pingcap_errors//:errors",
"@com_github_pingcap_failpoint//:failpoint",
"@com_github_pingcap_kvproto//pkg/diagnosticspb",
"@com_github_pingcap_kvproto//pkg/metapb",
"@com_github_pingcap_log//:log",
"@com_github_tikv_client_go_v2//tikv",
"@org_golang_google_grpc//:grpc",
"@org_golang_google_grpc//credentials",
"@org_golang_google_grpc//credentials/insecure",
"@org_golang_x_exp//slices",
"@org_uber_go_zap//:zap",
],
)

go_test(
name = "infoschema_test",
timeout = "short",
srcs = [
"infoschema_test.go",
"main_test.go",
"metrics_schema_test.go",
],
embed = [":infoschema"],
flaky = True,
shard_count = 11,
deps = [
"//ddl/placement",
"//domain",
"//kv",
"//meta",
"//meta/autoid",
"//parser/model",
"//parser/mysql",
"//session",
"//store/mockstore",
"//table",
"//testkit",
"//testkit/testsetup",
"//testkit/testutil",
"//types",
"//util",
"//util/set",
"@com_github_pingcap_errors//:errors",
"@com_github_prometheus_prometheus//promql",
"@com_github_stretchr_testify//require",
"@org_uber_go_goleak//:goleak",
],
)
2 changes: 2 additions & 0 deletions infoschema/infoschema.go
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,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 @@ -694,3 +694,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 1037e63

Please sign in to comment.