Skip to content

Commit fea86c8

Browse files
authored
executor: fix a bug that global temporary table send cop request (#58882) (#58979)
close #58875
1 parent ed7e195 commit fea86c8

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

pkg/executor/builder.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3539,6 +3539,10 @@ func buildNoRangeTableReader(b *executorBuilder, v *plannercore.PhysicalTableRea
35393539
dagReq.OutputOffsets = append(dagReq.OutputOffsets, uint32(i))
35403540
}
35413541

3542+
if e.table.Meta().TempTableType != model.TempTableNone {
3543+
e.dummy = true
3544+
}
3545+
35423546
return e, nil
35433547
}
35443548

@@ -3654,10 +3658,6 @@ func (b *executorBuilder) buildTableReader(v *plannercore.PhysicalTableReader) e
36543658
return nil
36553659
}
36563660

3657-
if ret.table.Meta().TempTableType != model.TempTableNone {
3658-
ret.dummy = true
3659-
}
3660-
36613661
ret.ranges = ts.Ranges
36623662
sctx := b.ctx.GetSessionVars().StmtCtx
36633663
sctx.TableIDs = append(sctx.TableIDs, ts.Table.ID)
@@ -3871,6 +3871,10 @@ func buildNoRangeIndexReader(b *executorBuilder, v *plannercore.PhysicalIndexRea
38713871
dagReq.OutputOffsets = append(dagReq.OutputOffsets, uint32(col.Index))
38723872
}
38733873

3874+
if e.table.Meta().TempTableType != model.TempTableNone {
3875+
e.dummy = true
3876+
}
3877+
38743878
return e, nil
38753879
}
38763880

@@ -3887,10 +3891,6 @@ func (b *executorBuilder) buildIndexReader(v *plannercore.PhysicalIndexReader) e
38873891
return nil
38883892
}
38893893

3890-
if ret.table.Meta().TempTableType != model.TempTableNone {
3891-
ret.dummy = true
3892-
}
3893-
38943894
ret.ranges = is.Ranges
38953895
sctx := b.ctx.GetSessionVars().StmtCtx
38963896
sctx.IndexNames = append(sctx.IndexNames, is.Table.Name.O+":"+is.Index.Name.O)
@@ -4057,6 +4057,10 @@ func buildNoRangeIndexLookUpReader(b *executorBuilder, v *plannercore.PhysicalIn
40574057
e.handleCols = v.CommonHandleCols
40584058
e.primaryKeyIndex = tables.FindPrimaryIndex(tbl.Meta())
40594059
}
4060+
4061+
if e.table.Meta().TempTableType != model.TempTableNone {
4062+
e.dummy = true
4063+
}
40604064
return e, nil
40614065
}
40624066

@@ -4073,10 +4077,6 @@ func (b *executorBuilder) buildIndexLookUpReader(v *plannercore.PhysicalIndexLoo
40734077
return nil
40744078
}
40754079

4076-
if ret.table.Meta().TempTableType != model.TempTableNone {
4077-
ret.dummy = true
4078-
}
4079-
40804080
ts := v.TablePlans[0].(*plannercore.PhysicalTableScan)
40814081

40824082
ret.ranges = is.Ranges

pkg/executor/temporary_table_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package executor_test
1616

1717
import (
1818
"context"
19+
"strings"
1920
"sync"
2021
"testing"
2122
"time"
@@ -162,3 +163,22 @@ func assertTemporaryTableNoNetwork(t *testing.T, createTable func(*testkit.TestK
162163
tk.MustExec("select * from tmp_t where id > 1 for update")
163164
tk.MustExec("rollback")
164165
}
166+
167+
func TestIssue58875(t *testing.T) {
168+
store := testkit.CreateMockStore(t)
169+
tk := testkit.NewTestKit(t, store)
170+
171+
tk.MustExec("use test")
172+
tk.MustExec("drop table if exists users, users1;")
173+
tk.MustExec("CREATE GLOBAL TEMPORARY TABLE users ( id BIGINT, v1 int, v2 int, v3 int, v4 int, PRIMARY KEY(id), index v1_index(v1,v2,v3) ) ON COMMIT DELETE ROWS;")
174+
tk.MustExec("create table users1(id int, value int, index index_value(value));")
175+
tk.MustExec("insert into users1 values(1,2);")
176+
tk.MustExec("begin;")
177+
res := tk.MustQuery("explain analyze select /*+ inl_join(users) */ * from users use index(v1_index) where v1 in (select value from users1);").Rows()
178+
for _, row := range res {
179+
// if access object contains 'table:users', the execution info should be empty.
180+
if strings.Contains(row[4].(string), "table:users") && !strings.Contains(row[4].(string), "table:users1") {
181+
require.Len(t, row[5].(string), 0)
182+
}
183+
}
184+
}

0 commit comments

Comments
 (0)