MCPcopy
hub / github.com/pingcap/tidb / fetchRecoverRows

Method fetchRecoverRows

pkg/executor/admin.go:362–401  ·  view source on GitHub ↗
(ctx context.Context, srcResult distsql.SelectResult, result *backfillResult)

Source from the content-addressed store, hash-verified

360}
361
362func (e *RecoverIndexExec) fetchRecoverRows(ctx context.Context, srcResult distsql.SelectResult, result *backfillResult) ([]recoverRows, error) {
363 e.recoverRows = e.recoverRows[:0]
364 idxValLen := len(e.index.Meta().Columns)
365 result.scanRowCount = 0
366
367 for {
368 err := srcResult.Next(ctx, e.srcChunk)
369 if err != nil {
370 return nil, err
371 }
372
373 if e.srcChunk.NumRows() == 0 {
374 break
375 }
376 iter := chunk.NewIterator4Chunk(e.srcChunk)
377 for row := iter.Begin(); row != iter.End(); row = iter.Next() {
378 if result.scanRowCount >= int64(e.batchSize) {
379 return e.recoverRows, nil
380 }
381 handle, err := e.handleCols.BuildHandle(e.Ctx().GetSessionVars().StmtCtx, row)
382 if err != nil {
383 return nil, err
384 }
385 if e.index.Meta().Global {
386 handle = kv.NewPartitionHandle(e.physicalID, handle)
387 }
388 idxVals, err := e.buildIndexedValues(row, e.idxValsBufs[result.scanRowCount], e.colFieldTypes, idxValLen)
389 if err != nil {
390 return nil, err
391 }
392 e.idxValsBufs[result.scanRowCount] = idxVals
393 rsData := tables.TryGetHandleRestoredDataWrapper(e.table.Meta(), plannercore.GetCommonHandleDatum(e.handleCols, row), nil, e.index.Meta())
394 e.recoverRows = append(e.recoverRows, recoverRows{handle: handle, idxVals: idxVals, rsData: rsData, skip: true})
395 result.scanRowCount++
396 result.currentHandle = handle
397 }
398 }
399
400 return e.recoverRows, nil
401}
402
403func (e *RecoverIndexExec) buildIndexedValues(row chunk.Row, idxVals []types.Datum, fieldTypes []*types.FieldType, idxValLen int) ([]types.Datum, error) {
404 if !e.containsGenedCol {

Callers 1

backfillIndexInTxnMethod · 0.95

Calls 13

BeginMethod · 0.95
EndMethod · 0.95
NextMethod · 0.95
buildIndexedValuesMethod · 0.95
NewIterator4ChunkFunction · 0.92
NewPartitionHandleFunction · 0.92
MetaMethod · 0.65
NextMethod · 0.65
NumRowsMethod · 0.65
BuildHandleMethod · 0.65
GetSessionVarsMethod · 0.65

Tested by

no test coverage detected