// Do implements plan.Plan Do interface. func (r *selectIndexDefaultPlan) Do(ctx context.Context, f plan.RowIterFunc) (err error) { var x kv.Index switch ix := r.x.(type) { case *column.IndexedCol: x = ix.X default: panic("should never happen") } txn, err := ctx.GetTxn(false) if err != nil { return err } en, err := x.SeekFirst(txn) if err != nil { return types.EOFAsNil(err) } defer en.Close() var id int64 for { k, _, err := en.Next() if err != nil { return types.EOFAsNil(err) } id++ if more, err := f(id, k); !more || err != nil { return err } } }