diff --git a/pkg/planner/core/find_best_task.go b/pkg/planner/core/find_best_task.go index 5ab3b434d64dc..5fea1ed1c33b3 100644 --- a/pkg/planner/core/find_best_task.go +++ b/pkg/planner/core/find_best_task.go @@ -1401,7 +1401,6 @@ func (ds *DataSource) FindBestTask(prop *property.PhysicalProperty, planCounter if canConvertPointGet && ds.table.Meta().GetPartitionInfo() != nil { // partition table with dynamic prune not support batchPointGet // Due to sorting? - // Please make sure handle `where _tidb_rowid in (xx, xx)` correctly when delete this if statements. if canConvertPointGet && len(path.Ranges) > 1 && ds.SCtx().GetSessionVars().StmtCtx.UseDynamicPartitionPrune() { canConvertPointGet = false } @@ -1419,8 +1418,8 @@ func (ds *DataSource) FindBestTask(prop *property.PhysicalProperty, planCounter canConvertPointGet = false } } - // Partition table can't use `_tidb_rowid` to generate PointGet Plan unless one partition is explicitly specified. - if canConvertPointGet && path.IsIntHandlePath && ds.HandleCols != nil && ds.HandleCols.GetCol(0).ID == model.ExtraHandleID && len(ds.PartitionNames) != 1 { + // Partition table can't use `_tidb_rowid` to generate PointGet Plan. + if canConvertPointGet && path.IsIntHandlePath && ds.HandleCols != nil && ds.HandleCols.GetCol(0).ID == model.ExtraHandleID { canConvertPointGet = false } if canConvertPointGet { @@ -2628,11 +2627,7 @@ func (ds *DataSource) convertToPointGet(prop *property.PhysicalProperty, candida found := false for i := range ds.Columns { if ds.Columns[i].ID == ds.HandleCols.GetCol(0).ID { - if ds.HandleCols.GetCol(0).ID == model.ExtraHandleID { - pointGetPlan.HandleColOffset = -1 - } else { - pointGetPlan.HandleColOffset = ds.Columns[i].Offset - } + pointGetPlan.HandleColOffset = ds.Columns[i].Offset found = true break } diff --git a/pkg/planner/core/point_get_plan.go b/pkg/planner/core/point_get_plan.go index c7298f05843a9..8378e8e63cbfe 100644 --- a/pkg/planner/core/point_get_plan.go +++ b/pkg/planner/core/point_get_plan.go @@ -339,16 +339,6 @@ func (p *PointGetPlan) PrunePartitions(sctx sessionctx.Context) bool { // reading for the Global Index / table id return false } - if p.IndexInfo == nil && p.HandleColOffset == -1 && len(p.PartitionNames) == 1 { - // _tidb_rowid + specify a partition - for i, def := range pi.Definitions { - if def.Name.L == p.PartitionNames[0].L { - p.PartitionIdx = &i - break - } - } - return false - } // If tryPointGetPlan did generate the plan, // then PartitionIdx is not set and needs to be set here! // There are two ways to get here from static mode partition pruning: diff --git a/tests/integrationtest/r/planner/core/integration_partition.result b/tests/integrationtest/r/planner/core/integration_partition.result index 05ade71b547f4..8ad17e7172ae3 100644 --- a/tests/integrationtest/r/planner/core/integration_partition.result +++ b/tests/integrationtest/r/planner/core/integration_partition.result @@ -1304,18 +1304,3 @@ TableReader_6 2.00 root partition:all data:TableRangeScan_5 select *,_tidb_rowid from t where _tidb_rowid=1; id _tidb_rowid 0 1 -explain select *,_tidb_rowid from t partition(p0) where _tidb_rowid=1; -id estRows task access object operator info -Point_Get_5 1.00 root table:t, partition:p0 handle:1 -select *,_tidb_rowid from t partition(p0) where _tidb_rowid=1; -id _tidb_rowid -0 1 -explain select *,_tidb_rowid from t partition(p1) where _tidb_rowid=1; -id estRows task access object operator info -Point_Get_5 1.00 root table:t, partition:p1 handle:1 -select *,_tidb_rowid from t partition(p1) where _tidb_rowid=1; -id _tidb_rowid -explain select *,_tidb_rowid from t partition(p0,p1) where _tidb_rowid=1; -id estRows task access object operator info -TableReader_6 2.00 root partition:p0,p1 data:TableRangeScan_5 -└─TableRangeScan_5 2.00 cop[tikv] table:t range:[1,1], keep order:false diff --git a/tests/integrationtest/t/planner/core/integration_partition.test b/tests/integrationtest/t/planner/core/integration_partition.test index e6a0c200e40f9..5795a39b33c97 100644 --- a/tests/integrationtest/t/planner/core/integration_partition.test +++ b/tests/integrationtest/t/planner/core/integration_partition.test @@ -877,8 +877,3 @@ insert into t values(0),(0); analyze table t; explain select *,_tidb_rowid from t where _tidb_rowid=1; select *,_tidb_rowid from t where _tidb_rowid=1; -explain select *,_tidb_rowid from t partition(p0) where _tidb_rowid=1; -select *,_tidb_rowid from t partition(p0) where _tidb_rowid=1; -explain select *,_tidb_rowid from t partition(p1) where _tidb_rowid=1; -select *,_tidb_rowid from t partition(p1) where _tidb_rowid=1; -explain select *,_tidb_rowid from t partition(p0,p1) where _tidb_rowid=1;