diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index 98424e50fb15a..ef11df6fb6870 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -842,7 +842,7 @@ func (e *hugeMemTableRetriever) dataForColumnsInTable(ctx context.Context, sctx // Build plan is not thread safe, there will be concurrency on sessionctx. if err := runWithSystemSession(internalCtx, sctx, func(s sessionctx.Context) error { is := sessiontxn.GetTxnManager(s).GetTxnInfoSchema() - planBuilder, _ := plannercore.NewPlanBuilder().Init(s, is, &hint.BlockHintProcessor{}) + planBuilder, _ := plannercore.NewPlanBuilder(plannercore.PlanBuilderOptNoExecution{}).Init(s, is, &hint.BlockHintProcessor{}) var err error viewLogicalPlan, err = planBuilder.BuildDataSourceFromView(ctx, schema.Name, tbl, nil, nil) return errors.Trace(err) diff --git a/executor/infoschema_reader_test.go b/executor/infoschema_reader_test.go index ed6eed4fb4607..8a6d766f46c34 100644 --- a/executor/infoschema_reader_test.go +++ b/executor/infoschema_reader_test.go @@ -855,11 +855,14 @@ func TestShowColumnsWithSubQueryView(t *testing.T) { tk.MustExec("create view temp_view as (select * from `added` where id > (select max(id) from `incremental`));") // Show columns should not send coprocessor request to the storage. require.NoError(t, failpoint.Enable("tikvclient/tikvStoreSendReqResult", `return("timeout")`)) + require.NoError(t, failpoint.Enable("github.com/pingcap/tidb/planner/core/BuildDataSourceFailed", "panic")) tk.MustQuery("show columns from temp_view;").Check(testkit.Rows( "id int(11) YES ", "name text YES ", "some_date timestamp YES ")) + tk.MustQuery("select COLUMN_NAME from information_schema.columns where table_name = 'temp_view';").Check(testkit.Rows("id", "name", "some_date")) require.NoError(t, failpoint.Disable("tikvclient/tikvStoreSendReqResult")) + require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/planner/core/BuildDataSourceFailed")) } func TestNullColumns(t *testing.T) { diff --git a/planner/core/logical_plan_builder.go b/planner/core/logical_plan_builder.go index bf7dec9bd5a39..22ddbf3055dba 100644 --- a/planner/core/logical_plan_builder.go +++ b/planner/core/logical_plan_builder.go @@ -5345,6 +5345,7 @@ func (b *PlanBuilder) BuildDataSourceFromView(ctx context.Context, dbName model. terror.ErrorNotEqual(err, ErrNotSupportedYet) { err = ErrViewInvalid.GenWithStackByArgs(dbName.O, tableInfo.Name.O) } + failpoint.Inject("BuildDataSourceFailed", func() {}) return nil, err } pm := privilege.GetPrivilegeManager(b.ctx)