diff --git a/internal/rows/rows.go b/internal/rows/rows.go index c9581e21..cddf2f15 100644 --- a/internal/rows/rows.go +++ b/internal/rows/rows.go @@ -4,7 +4,6 @@ import ( "context" "database/sql" "database/sql/driver" - "io" "math" "reflect" "time" @@ -456,10 +455,6 @@ func (r *rows) fetchResultPage() error { r.RowScanner = nil } - if !r.ResultPageIterator.HasNext() { - return io.EOF - } - fetchResult, err1 := r.ResultPageIterator.Next() if err1 != nil { return err1 diff --git a/internal/rows/rows_test.go b/internal/rows/rows_test.go index b11868f4..65e391ab 100644 --- a/internal/rows/rows_test.go +++ b/internal/rows/rows_test.go @@ -1506,3 +1506,30 @@ func getSimpleClient(fetchResults []cli_service.TFetchResultsResp) cli_service.T return client } + +func getErroringClient(err error) cli_service.TCLIService { + fetchResultsFn := func(ctx context.Context, req *cli_service.TFetchResultsReq) (_r *cli_service.TFetchResultsResp, _err error) { + return nil, err + } + + client := &client.TestClient{ + FnFetchResults: fetchResultsFn, + } + + return client +} + +func TestFetchResultPage_PropagatesGetNextPageError(t *testing.T) { + errorMsg := "Error thrown while calling TFetchResults in getNextPage" + expectedErr := errors.New(errorMsg) + + client := getErroringClient(expectedErr) + + executeStatementResp := cli_service.TExecuteStatementResp{} + cfg := config.WithDefaults() + rows, _ := NewRows("connId", "corrId", nil, client, cfg, executeStatementResp.DirectResults) + // Call Next and ensure it propagates the error from getNextPage + actualErr := rows.Next(nil) + + assert.ErrorContains(t, actualErr, errorMsg) +}