resultForOkIter reads a maximum of one result row from a result iterator.
(ctx *sql.Context, iter sql.RowIter)
| 665 | |
| 666 | // resultForOkIter reads a maximum of one result row from a result iterator. |
| 667 | func resultForOkIter(ctx *sql.Context, iter sql.RowIter) (*Result, error) { |
| 668 | defer trace.StartRegion(ctx, "DoltgresHandler.resultForOkIter").End() |
| 669 | |
| 670 | row, err := iter.Next(ctx) |
| 671 | if err != nil { |
| 672 | return nil, err |
| 673 | } |
| 674 | _, err = iter.Next(ctx) |
| 675 | if err != io.EOF { |
| 676 | return nil, fmt.Errorf("result schema iterator returned more than one row") |
| 677 | } |
| 678 | if err := iter.Close(ctx); err != nil { |
| 679 | return nil, err |
| 680 | } |
| 681 | |
| 682 | return &Result{ |
| 683 | RowsAffected: row[0].(types.OkResult).RowsAffected, |
| 684 | }, nil |
| 685 | } |
| 686 | |
| 687 | // resultForEmptyIter ensures that an expected empty iterator returns no rows. |
| 688 | func resultForEmptyIter(ctx *sql.Context, iter sql.RowIter) (*Result, error) { |