diff --git a/executor/benchmark_test.go b/executor/benchmark_test.go index e0a38a73a884e..542ba5d5f963c 100644 --- a/executor/benchmark_test.go +++ b/executor/benchmark_test.go @@ -934,12 +934,14 @@ func prepare4HashJoin(testCase *hashJoinTestCase, innerExec, outerExec Executor) defaultValues := make([]types.Datum, e.buildWorker.buildSideExec.Schema().Len()) lhsTypes, rhsTypes := retTypes(innerExec), retTypes(outerExec) for i := uint(0); i < e.concurrency; i++ { - e.probeWorkers[i].workerID = i - e.probeWorkers[i].sessCtx = e.ctx - e.probeWorkers[i].hashJoinCtx = e.hashJoinCtx - e.probeWorkers[i].joiner = newJoiner(testCase.ctx, e.joinType, true, defaultValues, - nil, lhsTypes, rhsTypes, childrenUsedSchema, false) - e.probeWorkers[i].probeKeyColIdx = probeKeysColIdx + e.probeWorkers[i] = &probeWorker{ + workerID: i, + sessCtx: e.ctx, + hashJoinCtx: e.hashJoinCtx, + joiner: newJoiner(testCase.ctx, e.joinType, true, defaultValues, + nil, lhsTypes, rhsTypes, childrenUsedSchema, false), + probeKeyColIdx: probeKeysColIdx, + } } memLimit := int64(-1) if testCase.disk { diff --git a/executor/join.go b/executor/join.go index 2db97a8d3b2a2..bcab7d9a4ea60 100644 --- a/executor/join.go +++ b/executor/join.go @@ -1096,7 +1096,7 @@ func (e *HashJoinExec) Next(ctx context.Context, req *chunk.Chunk) (err error) { keyColIdx: e.buildWorker.buildKeyColIdx, naKeyColIdx: e.buildWorker.buildNAKeyColIdx, } - e.rowContainer = newHashRowContainer(e.ctx, hCtx, e.buildTypes) + e.rowContainer = newHashRowContainer(e.ctx, hCtx, retTypes(e.buildWorker.buildSideExec)) // we shallow copies rowContainer for each probe worker to avoid lock contention for i := uint(0); i < e.concurrency; i++ { if i == 0 {