diff --git a/ddl/table.go b/ddl/table.go index a9c836d5cbcd7..651eb28f5950b 100644 --- a/ddl/table.go +++ b/ddl/table.go @@ -399,6 +399,10 @@ func onTruncateTable(d *ddlCtx, t *meta.Meta, job *model.Job) (ver int64, _ erro if err != nil { return ver, errors.Trace(err) } + if tblInfo.IsView() { + job.State = model.JobStateCancelled + return ver, infoschema.ErrTableNotExists.GenWithStackByArgs(job.SchemaName, tblInfo.Name.O) + } err = t.DropTableOrView(schemaID, tblInfo.ID, true) if err != nil { diff --git a/executor/ddl_test.go b/executor/ddl_test.go index e9b3e971d7e1e..cd2be738ce96f 100644 --- a/executor/ddl_test.go +++ b/executor/ddl_test.go @@ -263,6 +263,15 @@ func (s *testSuite3) TestCreateView(c *C) { tk.MustExec("drop view v_nested, v_nested2") } +func (s *testSuite3) TestIssue16250(c *C) { + tk := testkit.NewTestKit(c, s.store) + tk.MustExec("use test") + tk.MustExec("create table if not exists t(a int)") + tk.MustExec("create view view_issue16250 as select * from t") + _, err := tk.Exec("truncate table view_issue16250") + c.Assert(err.Error(), Equals, "[schema:1146]Table 'test.view_issue16250' doesn't exist") +} + func (s *testSuite3) TestCreateViewWithOverlongColName(c *C) { tk := testkit.NewTestKit(c, s.store) tk.MustExec("use test")