From 035603a45208e3558be970ffdda2f26b96e2d7a4 Mon Sep 17 00:00:00 2001 From: Shenghui Wu <793703860@qq.com> Date: Mon, 30 Oct 2023 19:09:37 +0800 Subject: [PATCH 1/2] This is an automated cherry-pick of #48090 Signed-off-by: ti-chi-bot --- executor/benchmark_test.go | 10 ++++++++++ executor/hash_table.go | 10 ++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/executor/benchmark_test.go b/executor/benchmark_test.go index b09e31a3d8774..ee7394cd890dc 100644 --- a/executor/benchmark_test.go +++ b/executor/benchmark_test.go @@ -1130,6 +1130,16 @@ func BenchmarkHashJoinExec(b *testing.B) { b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { benchmarkHashJoinExecWithCase(b, cas) }) + + cols = []*types.FieldType{ + types.NewFieldType(mysql.TypeLonglong), + } + cas = defaultHashJoinTestCase(cols, 0, false) + cas.keyIdx = []int{0} + cas.disk = true + b.Run(fmt.Sprintf("%v", cas), func(b *testing.B) { + benchmarkHashJoinExecWithCase(b, cas) + }) } func BenchmarkOuterHashJoinExec(b *testing.B) { diff --git a/executor/hash_table.go b/executor/hash_table.go index d6d7d12112352..2db01ff41c49b 100644 --- a/executor/hash_table.go +++ b/executor/hash_table.go @@ -242,12 +242,18 @@ func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk // Some variables used for memTracker. var ( +<<<<<<< HEAD:executor/hash_table.go matchedDataSize = int64(cap(matched))*rowSize + int64(cap(matchedPtrs))*rowPtrSize lastChunkBufPointer *chunk.Chunk = nil memDelta int64 = 0 needTrackMemUsage = cap(innerPtrs) > signalCheckpointForJoinMask +======= + matchedDataSize = int64(cap(matched))*rowSize + int64(cap(matchedPtrs))*rowPtrSize + needTrackMemUsage = cap(innerPtrs) > signalCheckpointForJoinMask + lastChunkBufPointer = c.chkBuf + memDelta int64 +>>>>>>> f8ca23c6bfd (executor: reuse chunk for GetMatchedRowsAndPtrs calls (#48090)):pkg/executor/hash_table.go ) - c.chkBuf = nil c.memTracker.Consume(-c.chkBufSizeForOneProbe) if needTrackMemUsage { c.memTracker.Consume(int64(cap(innerPtrs)) * rowPtrSize) @@ -265,7 +271,7 @@ func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk if err != nil { return nil, nil, err } - if needTrackMemUsage && c.chkBuf != lastChunkBufPointer && lastChunkBufPointer != nil { + if c.chkBuf != lastChunkBufPointer && lastChunkBufPointer != nil { lastChunkSize := lastChunkBufPointer.MemoryUsage() c.chkBufSizeForOneProbe += lastChunkSize memDelta += lastChunkSize From 2c79c54404aa8dcc0ef921be7aa939a0be502554 Mon Sep 17 00:00:00 2001 From: Yang Keao Date: Tue, 31 Oct 2023 15:09:34 +0800 Subject: [PATCH 2/2] fix conflict Signed-off-by: Yang Keao --- executor/hash_table.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/executor/hash_table.go b/executor/hash_table.go index 2db01ff41c49b..7800d3ab46b97 100644 --- a/executor/hash_table.go +++ b/executor/hash_table.go @@ -242,17 +242,10 @@ func (c *hashRowContainer) GetMatchedRowsAndPtrs(probeKey uint64, probeRow chunk // Some variables used for memTracker. var ( -<<<<<<< HEAD:executor/hash_table.go matchedDataSize = int64(cap(matched))*rowSize + int64(cap(matchedPtrs))*rowPtrSize - lastChunkBufPointer *chunk.Chunk = nil + lastChunkBufPointer *chunk.Chunk = c.chkBuf memDelta int64 = 0 needTrackMemUsage = cap(innerPtrs) > signalCheckpointForJoinMask -======= - matchedDataSize = int64(cap(matched))*rowSize + int64(cap(matchedPtrs))*rowPtrSize - needTrackMemUsage = cap(innerPtrs) > signalCheckpointForJoinMask - lastChunkBufPointer = c.chkBuf - memDelta int64 ->>>>>>> f8ca23c6bfd (executor: reuse chunk for GetMatchedRowsAndPtrs calls (#48090)):pkg/executor/hash_table.go ) c.memTracker.Consume(-c.chkBufSizeForOneProbe) if needTrackMemUsage {