From 4899ce5e923b5833cc684ea8d301f73773718330 Mon Sep 17 00:00:00 2001 From: winkyao Date: Tue, 18 Dec 2018 14:47:23 +0800 Subject: [PATCH] ddl: add error check in ddlCtx.buildDescTableScan (#8726) --- ddl/reorg.go | 4 ++++ executor/admin.go | 10 ++++++++++ executor/analyze.go | 3 +++ 3 files changed, 17 insertions(+) diff --git a/ddl/reorg.go b/ddl/reorg.go index af72675962175..fd583f166977a 100644 --- a/ddl/reorg.go +++ b/ddl/reorg.go @@ -250,6 +250,10 @@ func (d *ddlCtx) buildDescTableScan(ctx context.Context, startTS uint64, tbl tab builder.Request.Priority = kv.PriorityLow kvReq, err := builder.Build() + if err != nil { + return nil, errors.Trace(err) + } + sctx := newContext(d.store) result, err := distsql.Select(ctx, sctx, kvReq, getColumnsTypes(columns), statistics.NewQueryFeedback(0, nil, 0, false)) if err != nil { diff --git a/executor/admin.go b/executor/admin.go index 13505738f28a9..1d2c68470c553 100644 --- a/executor/admin.go +++ b/executor/admin.go @@ -114,6 +114,9 @@ func (e *CheckIndexRangeExec) Open(ctx context.Context) error { SetKeepOrder(true). SetFromSessionVars(e.ctx.GetSessionVars()). Build() + if err != nil { + return errors.Trace(err) + } e.result, err = distsql.Select(ctx, e.ctx, kvReq, e.retFieldTypes, statistics.NewQueryFeedback(0, nil, 0, false)) if err != nil { @@ -259,6 +262,9 @@ func (e *RecoverIndexExec) buildTableScan(ctx context.Context, txn kv.Transactio SetKeepOrder(true). SetFromSessionVars(e.ctx.GetSessionVars()). Build() + if err != nil { + return nil, errors.Trace(err) + } // Actually, with limitCnt, the match datas maybe only in one region, so let the concurrency to be 1, // avoid unnecessary region scan. @@ -621,6 +627,10 @@ func (e *CleanupIndexExec) buildIndexScan(ctx context.Context, txn kv.Transactio SetKeepOrder(true). SetFromSessionVars(e.ctx.GetSessionVars()). Build() + if err != nil { + return nil, errors.Trace(err) + } + kvReq.KeyRanges[0].StartKey = kv.Key(e.lastIdxKey).PrefixNext() kvReq.Concurrency = 1 result, err := distsql.Select(ctx, e.ctx, kvReq, e.getIdxColTypes(), statistics.NewQueryFeedback(0, nil, 0, false)) diff --git a/executor/analyze.go b/executor/analyze.go index e3a0284f2fdc6..2d7703935991c 100644 --- a/executor/analyze.go +++ b/executor/analyze.go @@ -175,6 +175,9 @@ func (e *AnalyzeIndexExec) open() error { SetKeepOrder(true). SetConcurrency(e.concurrency). Build() + if err != nil { + return errors.Trace(err) + } ctx := context.TODO() e.result, err = distsql.Analyze(ctx, e.ctx.GetClient(), kvReq, e.ctx.GetSessionVars().KVVars, e.ctx.GetSessionVars().InRestrictedSQL) if err != nil {