diff --git a/errors.go b/errors.go index a32b29c..b1913ba 100644 --- a/errors.go +++ b/errors.go @@ -46,6 +46,7 @@ type PgError struct { File string Line int32 Routine string + NetworkError error } func (pe *PgError) Error() string { diff --git a/pgconn.go b/pgconn.go index f8b8a65..0a9b01e 100644 --- a/pgconn.go +++ b/pgconn.go @@ -1330,7 +1330,11 @@ func (mrr *MultiResultReader) receiveMessage() (pgproto3.BackendMessage, error) if err != nil { mrr.pgConn.contextWatcher.Unwatch() - mrr.err = preferContextOverNetTimeoutError(mrr.ctx, err) + if x, ok := mrr.err.(*PgError); ok { + x.NetworkError = err + } else { + mrr.err = preferContextOverNetTimeoutError(mrr.ctx, err) + } mrr.closed = true mrr.pgConn.asyncClose() return nil, mrr.err