From 97edf41c0891fa3a26f489ef77664e5e1147fc7d Mon Sep 17 00:00:00 2001 From: Madison Chamberlain <46542378+madisonchamberlain@users.noreply.github.com> Date: Tue, 11 Oct 2022 15:43:56 -0700 Subject: [PATCH] If FuncGet() returns no code dont convert to str (#89) --- monitoring.go | 74 ++++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/monitoring.go b/monitoring.go index acf7d415d..670c8a614 100644 --- a/monitoring.go +++ b/monitoring.go @@ -328,40 +328,46 @@ func (sc *snowflakeConn) rowsForRunningQuery( // Wait for query to complete from a query id from /queries//result endpoint. func (sc *snowflakeConn) blockOnRunningQuery( - ctx context.Context, qid string) error { - resultPath := fmt.Sprintf(urlQueriesResultFmt, qid) - resp, err := sc.waitForCompletedQueryResultResp(ctx, resultPath) - if err != nil { - logger.WithContext(ctx).Errorf("error: %v", err) - if resp != nil { - code, err := strconv.Atoi(resp.Code) - if err != nil { - return err - } - return (&SnowflakeError{ - Number: code, - SQLState: resp.Data.SQLState, - Message: err.Error(), - QueryID: resp.Data.QueryID, - }).exceptionTelemetry(sc) - } - return err - } - if !resp.Success { - message := resp.Message - code, err := strconv.Atoi(resp.Code) - if err != nil { - code = ErrQueryStatus - message = fmt.Sprintf("%s: (failed to parse original code: %s: %s)", message, resp.Code, err.Error()) - } - return (&SnowflakeError{ - Number: code, - SQLState: resp.Data.SQLState, - Message: message, - QueryID: resp.Data.QueryID, - }).exceptionTelemetry(sc) - } - return nil + ctx context.Context, qid string) error { + resultPath := fmt.Sprintf(urlQueriesResultFmt, qid) + resp, err := sc.waitForCompletedQueryResultResp(ctx, resultPath) + if err != nil { + logger.WithContext(ctx).Errorf("error: %v", err) + if resp != nil { + code := -1 + if resp.Code != "" { + code, err = strconv.Atoi(resp.Code) + if err != nil { + return err + } + } + return (&SnowflakeError{ + Number: code, + SQLState: resp.Data.SQLState, + Message: err.Error(), + QueryID: resp.Data.QueryID, + }).exceptionTelemetry(sc) + } + return err + } + if !resp.Success { + message := resp.Message + code := -1 + if resp.Code != "" { + code, err = strconv.Atoi(resp.Code) + if err != nil { + code = ErrQueryStatus + message = fmt.Sprintf("%s: (failed to parse original code: %s: %s)", message, resp.Code, err.Error()) + } + } + return (&SnowflakeError{ + Number: code, + SQLState: resp.Data.SQLState, + Message: message, + QueryID: resp.Data.QueryID, + }).exceptionTelemetry(sc) + } + return nil } // prepare a Rows object to return for query of 'qid'