resultForOkIter reads a maximum of one result row from a result iterator.
(ctx *sql.Context, iter sql.RowIter)
| 555 | |
| 556 | // resultForOkIter reads a maximum of one result row from a result iterator. |
| 557 | func resultForOkIter(ctx *sql.Context, iter sql.RowIter) (*Result, error) { |
| 558 | defer trace.StartRegion(ctx, "DoltgresHandler.resultForOkIter").End() |
| 559 | |
| 560 | row, err := iter.Next(ctx) |
| 561 | if err != nil { |
| 562 | if printErrorStackTraces { |
| 563 | fmt.Printf("row: %+v\n", err) |
| 564 | } |
| 565 | return nil, err |
| 566 | } |
| 567 | _, err = iter.Next(ctx) |
| 568 | if err != io.EOF { |
| 569 | return nil, errors.Errorf("result schema iterator returned more than one row") |
| 570 | } |
| 571 | if err := iter.Close(ctx); err != nil { |
| 572 | return nil, err |
| 573 | } |
| 574 | |
| 575 | return &Result{ |
| 576 | RowsAffected: row[0].(types.OkResult).RowsAffected, |
| 577 | }, nil |
| 578 | } |
| 579 | |
| 580 | // resultForEmptyIter ensures that an expected empty iterator returns no rows. |
| 581 | func resultForEmptyIter(ctx *sql.Context, iter sql.RowIter) (*Result, error) { |