Skip to content

Commit afb68c6

Browse files
authored
*: support cancel query like 'select * from information_schema.tables' (#57766) (#57806)
close #57749
1 parent 0e8ccbc commit afb68c6

File tree

11 files changed

+28
-12
lines changed

11 files changed

+28
-12
lines changed

pkg/ddl/placement_policy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ func CheckPlacementPolicyNotInUseFromMeta(t *meta.Mutator, policy *model.PolicyI
458458
return dbterror.ErrPlacementPolicyInUse.GenWithStackByArgs(policy.Name)
459459
}
460460

461-
tables, err := t.ListTables(dbInfo.ID)
461+
tables, err := t.ListTables(context.Background(), dbInfo.ID)
462462
if err != nil {
463463
return err
464464
}

pkg/ddl/placement_policy_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,7 @@ func testGetPolicyDependency(storage kv.Storage, name string) []int64 {
984984
return err
985985
}
986986
for _, db := range dbs {
987-
tbls, err := t.ListTables(db.ID)
987+
tbls, err := t.ListTables(context.Background(), db.ID)
988988
if err != nil {
989989
return err
990990
}

pkg/ddl/schema.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ func (w *worker) onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _
180180
return ver, errors.Trace(err)
181181
}
182182
var tables []*model.TableInfo
183-
tables, err = metaMut.ListTables(job.SchemaID)
183+
tables, err = metaMut.ListTables(jobCtx.stepCtx, job.SchemaID)
184184
if err != nil {
185185
return ver, errors.Trace(err)
186186
}
@@ -205,7 +205,7 @@ func (w *worker) onDropSchema(jobCtx *jobContext, job *model.Job) (ver int64, _
205205
case model.StateDeleteOnly:
206206
dbInfo.State = model.StateNone
207207
var tables []*model.TableInfo
208-
tables, err = metaMut.ListTables(job.SchemaID)
208+
tables, err = metaMut.ListTables(jobCtx.stepCtx, job.SchemaID)
209209
if err != nil {
210210
return ver, errors.Trace(err)
211211
}
@@ -294,7 +294,7 @@ func (w *worker) onRecoverSchema(jobCtx *jobContext, job *model.Job) (ver int64,
294294
sid := recoverSchemaInfo.DBInfo.ID
295295
snap := w.store.GetSnapshot(kv.NewVersion(recoverSchemaInfo.SnapshotTS))
296296
snapMeta := meta.NewReader(snap)
297-
tables, err2 := snapMeta.ListTables(sid)
297+
tables, err2 := snapMeta.ListTables(jobCtx.stepCtx, sid)
298298
if err2 != nil {
299299
job.State = model.JobStateCancelled
300300
return ver, errors.Trace(err2)

pkg/ddl/table.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1239,7 +1239,7 @@ func checkConstraintNamesNotExists(t *meta.Mutator, schemaID int64, constraints
12391239
if len(constraints) == 0 {
12401240
return nil
12411241
}
1242-
tbInfos, err := t.ListTables(schemaID)
1242+
tbInfos, err := t.ListTables(context.Background(), schemaID)
12431243
if err != nil {
12441244
return err
12451245
}

pkg/domain/domain.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ func (*Domain) fetchSchemasWithTables(ctx context.Context, schemas []*model.DBIn
521521
di.TableName2ID = name2ID
522522
tables = specialTableInfos
523523
} else {
524-
tables, err = m.ListTables(di.ID)
524+
tables, err = m.ListTables(ctx, di.ID)
525525
if err != nil {
526526
return err
527527
}

pkg/executor/infoschema_reader.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,9 @@ func (e *memtableRetriever) setDataFromTables(ctx context.Context, sctx sessionc
834834
if err != nil {
835835
return errors.Trace(err)
836836
}
837+
if ctx.Err() != nil {
838+
return errors.Trace(ctx.Err())
839+
}
837840
}
838841
e.rows = rows
839842
return nil
@@ -1204,6 +1207,10 @@ func (e *memtableRetriever) setDataFromPartitions(ctx context.Context, sctx sess
12041207
}
12051208
createTime := types.NewTime(types.FromGoTime(table.GetUpdateTime()), createTimeTp, types.DefaultFsp)
12061209

1210+
if ctx.Err() != nil {
1211+
return errors.Trace(ctx.Err())
1212+
}
1213+
12071214
var rowCount, dataLength, indexLength uint64
12081215
if useStatsCache {
12091216
if table.GetPartitionInfo() == nil {

pkg/infoschema/infoschema_v2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ retry:
844844
// the meta region leader is slow.
845845
snapshot.SetOption(kv.TiKVClientReadTimeout, uint64(3000)) // 3000ms.
846846
m := meta.NewReader(snapshot)
847-
tblInfos, err := m.ListTables(dbInfo.ID)
847+
tblInfos, err := m.ListTables(ctx, dbInfo.ID)
848848
if err != nil {
849849
if meta.ErrDBNotExists.Equal(err) {
850850
return nil, nil

pkg/meta/meta.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package meta
1616

1717
import (
1818
"bytes"
19+
"context"
1920
"encoding/binary"
2021
"encoding/json"
2122
"fmt"
@@ -1131,7 +1132,7 @@ func GetTableInfoWithAttributes(m *Mutator, dbID int64, filterAttrs ...string) (
11311132
}
11321133

11331134
// ListTables shows all tables in database.
1134-
func (m *Mutator) ListTables(dbID int64) ([]*model.TableInfo, error) {
1135+
func (m *Mutator) ListTables(ctx context.Context, dbID int64) ([]*model.TableInfo, error) {
11351136
res, err := m.GetMetasByDBID(dbID)
11361137
if err != nil {
11371138
return nil, errors.Trace(err)
@@ -1144,6 +1145,9 @@ func (m *Mutator) ListTables(dbID int64) ([]*model.TableInfo, error) {
11441145
if !strings.HasPrefix(tableKey, mTablePrefix) {
11451146
continue
11461147
}
1148+
if ctx.Err() != nil {
1149+
return nil, errors.Trace(ctx.Err())
1150+
}
11471151

11481152
tbInfo := &model.TableInfo{}
11491153
err = json.Unmarshal(r.Value, tbInfo)

pkg/meta/meta_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func TestMeta(t *testing.T) {
289289
tableNames, err := m.ListSimpleTables(1)
290290
require.NoError(t, err)
291291
require.Equal(t, []*model.TableNameInfo{tblName, tblName2}, tableNames)
292-
tables, err := m.ListTables(1)
292+
tables, err := m.ListTables(context.Background(), 1)
293293
require.NoError(t, err)
294294
require.Equal(t, []*model.TableInfo{tbInfo, tbInfo2}, tables)
295295
{
@@ -327,7 +327,7 @@ func TestMeta(t *testing.T) {
327327
tableNames, err = m.ListSimpleTables(1)
328328
require.NoError(t, err)
329329
require.Equal(t, []*model.TableNameInfo{tblName}, tableNames)
330-
tables, err = m.ListTables(1)
330+
tables, err = m.ListTables(context.Background(), 1)
331331
require.NoError(t, err)
332332
require.Equal(t, []*model.TableInfo{tbInfo}, tables)
333333
{

pkg/meta/reader.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
package meta
1616

1717
import (
18+
"context"
19+
1820
"github.com/pingcap/tidb/pkg/kv"
1921
"github.com/pingcap/tidb/pkg/meta/model"
2022
"github.com/pingcap/tidb/pkg/structure"
@@ -25,7 +27,7 @@ type Reader interface {
2527
GetDatabase(dbID int64) (*model.DBInfo, error)
2628
ListDatabases() ([]*model.DBInfo, error)
2729
GetTable(dbID int64, tableID int64) (*model.TableInfo, error)
28-
ListTables(dbID int64) ([]*model.TableInfo, error)
30+
ListTables(ctx context.Context, dbID int64) ([]*model.TableInfo, error)
2931
ListSimpleTables(dbID int64) ([]*model.TableNameInfo, error)
3032
IterTables(dbID int64, fn func(info *model.TableInfo) error) error
3133
GetAutoIDAccessors(dbID, tableID int64) AutoIDAccessors

0 commit comments

Comments
 (0)