code: func (t *mergeJoinInnerTable) reallocReaderResult() {
  	if !t.curResultInUse {
  		// If "t.curResult" is not in use, we can just reuse it.
  		t.curResult.Reset()
  		return
  	}
  
  	// Create a new Chunk and append it to "resourceQueue" if there is no more
  	// available chunk in "resourceQueue".
  	if len(t.resourceQueue) == 0 {
  		newChunk := t.reader.newFirstChunk()
  		t.memTracker.Consume(newChunk.MemoryUsage())
  		t.resourceQueue = append(t.resourceQueue, newChunk)
  	}
  
  	// NOTE: "t.curResult" is always the last element of "resultQueue".
  	t.curResult = t.resourceQueue[0]
  	t.curIter = chunk.NewIterator4Chunk(t.curResult)
  	t.resourceQueue = t.resourceQueue[1:]
  	t.resultQueue = append(t.resultQueue, t.curResult)
  	t.curResult.Reset()
  	t.curResultInUse = false
  }
docs: // reallocReaderResult resets "t.curResult" to an empty Chunk to buffer the result of "t.reader".
  // It pops a Chunk from "t.resourceQueue" and push it into "t.resultQueue" immediately.