Skip to content

Commit 0086f44

Browse files
authored
statstics,ddl: fix FK table forgets to send CreateTable event (#53654) (#53674)
close #53652
1 parent 4afee51 commit 0086f44

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

ddl/table.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ func createTableWithForeignKeys(d *ddlCtx, t *meta.Meta, job *model.Job, tbInfo
198198
return ver, errors.Trace(err)
199199
}
200200
job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tbInfo)
201+
asyncNotifyEvent(d, &util.Event{Tp: model.ActionCreateTable, TableInfo: tbInfo})
201202
return ver, nil
202203
default:
203204
return ver, errors.Trace(dbterror.ErrInvalidDDLJob.GenWithStackByArgs("table", tbInfo.State))

statistics/handle/ddl_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,30 @@ func TestDDLTable(t *testing.T) {
9595
require.Nil(t, h.Update(is))
9696
statsTbl = h.GetTableStats(tableInfo)
9797
require.False(t, statsTbl.Pseudo)
98+
99+
// For FK table's CreateTable Event
100+
// https://github.com/pingcap/tidb/issues/53652
101+
testKit.MustExec("create table t_parent (id int primary key)")
102+
is = do.InfoSchema()
103+
tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t_parent"))
104+
require.NoError(t, err)
105+
tableInfo = tbl.Meta()
106+
err = h.HandleDDLEvent(<-h.DDLEventCh())
107+
require.NoError(t, err)
108+
require.Nil(t, h.Update(is))
109+
statsTbl = h.GetTableStats(tableInfo)
110+
require.False(t, statsTbl.Pseudo)
111+
112+
testKit.MustExec("create table t_child (id int primary key, pid int, foreign key (pid) references t_parent(id) on delete cascade on update cascade);")
113+
is = do.InfoSchema()
114+
tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t_child"))
115+
require.NoError(t, err)
116+
tableInfo = tbl.Meta()
117+
err = h.HandleDDLEvent(<-h.DDLEventCh())
118+
require.NoError(t, err)
119+
require.Nil(t, h.Update(is))
120+
statsTbl = h.GetTableStats(tableInfo)
121+
require.False(t, statsTbl.Pseudo)
98122
}
99123

100124
func TestDDLHistogram(t *testing.T) {

0 commit comments

Comments
 (0)