@@ -651,17 +651,17 @@ func (is *infoschemaV2) TableByID(ctx context.Context, id int64) (val table.Tabl
651
651
return ret , true
652
652
}
653
653
654
- func (is * infoschemaV2 ) SchemaNameByTableID (tableID int64 ) (schemaName pmodel.CIStr , ok bool ) {
654
+ // TableItemByID implements the InfoSchema interface.
655
+ // It only contains memory operations, no worries about accessing the storage.
656
+ func (is * infoschemaV2 ) TableItemByID (tableID int64 ) (TableItem , bool ) {
655
657
if ! tableIDIsValid (tableID ) {
656
- return
658
+ return TableItem {}, false
657
659
}
658
-
659
660
itm , ok := is .searchTableItemByID (tableID )
660
661
if ! ok {
661
- return
662
+ return TableItem {}, false
662
663
}
663
-
664
- return itm .dbName , true
664
+ return TableItem {DBName : itm .dbName , TableName : itm .tableName }, true
665
665
}
666
666
667
667
// TableItem is exported from tableItem.
@@ -1023,9 +1023,7 @@ func (is *infoschemaV2) SchemaExists(schema pmodel.CIStr) bool {
1023
1023
return ok
1024
1024
}
1025
1025
1026
- func (is * infoschemaV2 ) FindTableByPartitionID (partitionID int64 ) (table.Table , * model.DBInfo , * model.PartitionDefinition ) {
1027
- var ok bool
1028
- var pi partitionItem
1026
+ func (is * infoschemaV2 ) searchPartitionItemByPartitionID (partitionID int64 ) (pi partitionItem , ok bool ) {
1029
1027
is .pid2tid .Descend (partitionItem {partitionID : partitionID , schemaVersion : math .MaxInt64 },
1030
1028
func (item partitionItem ) bool {
1031
1029
if item .partitionID != partitionID {
@@ -1036,12 +1034,37 @@ func (is *infoschemaV2) FindTableByPartitionID(partitionID int64) (table.Table,
1036
1034
return true
1037
1035
}
1038
1036
if item .schemaVersion <= is .infoSchema .schemaMetaVersion {
1039
- ok = ! item .tomb
1040
1037
pi = item
1038
+ ok = ! item .tomb
1041
1039
return false
1042
1040
}
1043
1041
return true
1044
- })
1042
+ },
1043
+ )
1044
+ return pi , ok
1045
+ }
1046
+
1047
+ // TableItemByPartitionID implements InfoSchema.TableItemByPartitionID.
1048
+ // It returns the lightweight meta info, no worries about access the storage.
1049
+ func (is * infoschemaV2 ) TableItemByPartitionID (partitionID int64 ) (TableItem , bool ) {
1050
+ pi , ok := is .searchPartitionItemByPartitionID (partitionID )
1051
+ if ! ok {
1052
+ return TableItem {}, false
1053
+ }
1054
+ return is .TableItemByID (pi .tableID )
1055
+ }
1056
+
1057
+ // TableIDByPartitionID implements InfoSchema.TableIDByPartitionID.
1058
+ func (is * infoschemaV2 ) TableIDByPartitionID (partitionID int64 ) (tableID int64 , ok bool ) {
1059
+ pi , ok := is .searchPartitionItemByPartitionID (partitionID )
1060
+ if ! ok {
1061
+ return
1062
+ }
1063
+ return pi .tableID , true
1064
+ }
1065
+
1066
+ func (is * infoschemaV2 ) FindTableByPartitionID (partitionID int64 ) (table.Table , * model.DBInfo , * model.PartitionDefinition ) {
1067
+ pi , ok := is .searchPartitionItemByPartitionID (partitionID )
1045
1068
if ! ok {
1046
1069
return nil , nil , nil
1047
1070
}
0 commit comments