diff --git a/pkg/ddl/table.go b/pkg/ddl/table.go index 2e5c15cca3ffb..df4d630b4e9f8 100644 --- a/pkg/ddl/table.go +++ b/pkg/ddl/table.go @@ -199,6 +199,7 @@ func createTableWithForeignKeys(d *ddlCtx, t *meta.Meta, job *model.Job, tbInfo return ver, errors.Trace(err) } job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tbInfo) + asyncNotifyEvent(d, &util.Event{Tp: model.ActionCreateTable, TableInfo: tbInfo}) return ver, nil default: return ver, errors.Trace(dbterror.ErrInvalidDDLJob.GenWithStackByArgs("table", tbInfo.State)) diff --git a/pkg/statistics/handle/ddl_test.go b/pkg/statistics/handle/ddl_test.go index 1eb754d5014eb..ba3ef32abc990 100644 --- a/pkg/statistics/handle/ddl_test.go +++ b/pkg/statistics/handle/ddl_test.go @@ -95,6 +95,30 @@ func TestDDLTable(t *testing.T) { require.Nil(t, h.Update(is)) statsTbl = h.GetTableStats(tableInfo) require.False(t, statsTbl.Pseudo) + + // For FK table's CreateTable Event + // https://github.com/pingcap/tidb/issues/53652 + testKit.MustExec("create table t_parent (id int primary key)") + is = do.InfoSchema() + tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t_parent")) + require.NoError(t, err) + tableInfo = tbl.Meta() + err = h.HandleDDLEvent(<-h.DDLEventCh()) + require.NoError(t, err) + require.Nil(t, h.Update(is)) + statsTbl = h.GetTableStats(tableInfo) + require.False(t, statsTbl.Pseudo) + + 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);") + is = do.InfoSchema() + tbl, err = is.TableByName(model.NewCIStr("test"), model.NewCIStr("t_child")) + require.NoError(t, err) + tableInfo = tbl.Meta() + err = h.HandleDDLEvent(<-h.DDLEventCh()) + require.NoError(t, err) + require.Nil(t, h.Update(is)) + statsTbl = h.GetTableStats(tableInfo) + require.False(t, statsTbl.Pseudo) } func TestDDLHistogram(t *testing.T) {