diff --git a/pkg/executor/show_placement.go b/pkg/executor/show_placement.go index b31bf6d564861..2c877685b2ca8 100644 --- a/pkg/executor/show_placement.go +++ b/pkg/executor/show_placement.go @@ -361,19 +361,16 @@ func (e *ShowExec) fetchAllTablePlacements(ctx context.Context, scheduleState ma dbs := e.is.AllSchemaNames() slices.SortFunc(dbs, func(i, j pmodel.CIStr) int { return cmp.Compare(i.O, j.O) }) - for _, dbName := range dbs { + tbls := e.is.ListTablesWithSpecialAttribute(infoschema.AllSpecialAttribute) + for _, db := range tbls { tableRowSets := make([]tableRowSet, 0) - tblInfos, err := e.is.SchemaTableInfos(ctx, dbName) - if err != nil { - return errors.Trace(err) - } - for _, tblInfo := range tblInfos { - if checker != nil && !checker.RequestVerification(activeRoles, dbName.O, tblInfo.Name.O, "", mysql.AllPrivMask) { + for _, tblInfo := range db.TableInfos { + if checker != nil && !checker.RequestVerification(activeRoles, db.DBName.O, tblInfo.Name.O, "", mysql.AllPrivMask) { continue } var rows [][]any - ident := ast.Ident{Schema: dbName, Name: tblInfo.Name} + ident := ast.Ident{Schema: db.DBName, Name: tblInfo.Name} tblPlacement, err := e.getTablePlacement(tblInfo) if err != nil { return err diff --git a/pkg/executor/show_placement_test.go b/pkg/executor/show_placement_test.go index 70f3bcf746702..2b5528f21f017 100644 --- a/pkg/executor/show_placement_test.go +++ b/pkg/executor/show_placement_test.go @@ -168,9 +168,9 @@ func TestShowPlacementPrivilege(t *testing.T) { tk1.MustQuery("show placement").Check(testkit.Rows( "POLICY p1 PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\" NULL", "DATABASE db2 PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\" PENDING", - "TABLE db2.t1 PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\" PENDING", "TABLE test.t1 PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\" PENDING", "TABLE test.t3 PARTITION p1 PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\" PENDING", + "TABLE db2.t1 PRIMARY_REGION=\"cn-east-1\" REGIONS=\"cn-east-1,cn-east-2\" SCHEDULE=\"EVEN\" PENDING", )) }