(ctx context.Context, srcResult distsql.SelectResult, result *backfillResult)
| 360 | } |
| 361 | |
| 362 | func (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 | |
| 403 | func (e *RecoverIndexExec) buildIndexedValues(row chunk.Row, idxVals []types.Datum, fieldTypes []*types.FieldType, idxValLen int) ([]types.Datum, error) { |
| 404 | if !e.containsGenedCol { |
no test coverage detected