Skip to content

Commit 2a39cfa

Browse files
Propagate error in TFetchResults (#255)
Currently, an error thrown in TFetchResults within getNextPage in resultPageIterator will be swallowed and an EOF err will be returned instead. This PR solves #254 Signed-off-by: Vikrant Puppala <vikrant.puppala@databricks.com>
1 parent 8c85f7b commit 2a39cfa

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

internal/rows/rows.go

-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"database/sql"
66
"database/sql/driver"
7-
"io"
87
"math"
98
"reflect"
109
"time"
@@ -456,10 +455,6 @@ func (r *rows) fetchResultPage() error {
456455
r.RowScanner = nil
457456
}
458457

459-
if !r.ResultPageIterator.HasNext() {
460-
return io.EOF
461-
}
462-
463458
fetchResult, err1 := r.ResultPageIterator.Next()
464459
if err1 != nil {
465460
return err1

internal/rows/rows_test.go

+27
Original file line numberDiff line numberDiff line change
@@ -1506,3 +1506,30 @@ func getSimpleClient(fetchResults []cli_service.TFetchResultsResp) cli_service.T
15061506

15071507
return client
15081508
}
1509+
1510+
func getErroringClient(err error) cli_service.TCLIService {
1511+
fetchResultsFn := func(ctx context.Context, req *cli_service.TFetchResultsReq) (_r *cli_service.TFetchResultsResp, _err error) {
1512+
return nil, err
1513+
}
1514+
1515+
client := &client.TestClient{
1516+
FnFetchResults: fetchResultsFn,
1517+
}
1518+
1519+
return client
1520+
}
1521+
1522+
func TestFetchResultPage_PropagatesGetNextPageError(t *testing.T) {
1523+
errorMsg := "Error thrown while calling TFetchResults in getNextPage"
1524+
expectedErr := errors.New(errorMsg)
1525+
1526+
client := getErroringClient(expectedErr)
1527+
1528+
executeStatementResp := cli_service.TExecuteStatementResp{}
1529+
cfg := config.WithDefaults()
1530+
rows, _ := NewRows("connId", "corrId", nil, client, cfg, executeStatementResp.DirectResults)
1531+
// Call Next and ensure it propagates the error from getNextPage
1532+
actualErr := rows.Next(nil)
1533+
1534+
assert.ErrorContains(t, actualErr, errorMsg)
1535+
}

0 commit comments

Comments
 (0)