statstics,ddl: fix FK table forgets to send CreateTable event (#53654)
close pingcap/tidb#53652
This commit is contained in:
@ -217,6 +217,11 @@ func createTableWithForeignKeys(d *ddlCtx, t *meta.Meta, job *model.Job, tbInfo
|
||||
return ver, errors.Trace(err)
|
||||
}
|
||||
job.FinishTableJob(model.JobStateDone, model.StatePublic, ver, tbInfo)
|
||||
createTableEvent := statsutil.NewCreateTableEvent(
|
||||
job.SchemaID,
|
||||
tbInfo,
|
||||
)
|
||||
asyncNotifyEvent(d, createTableEvent)
|
||||
return ver, nil
|
||||
default:
|
||||
return ver, errors.Trace(dbterror.ErrInvalidDDLJob.GenWithStackByArgs("table", tbInfo.State))
|
||||
|
||||
@ -86,6 +86,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 TestCreateASystemTable(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user