Skip to content

Commit 19eb3e3

Browse files
authored
Fix error source in QueryData (#180)
1 parent 7cabe10 commit 19eb3e3

File tree

4 files changed

+8
-87
lines changed

4 files changed

+8
-87
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [4.2.7]
9+
10+
### Changed
11+
- Fix error source in QueryData (#180)
12+
813
## [4.2.6]
914

1015
### Changed

errors.go

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -62,38 +62,12 @@ func IsPGXConnectionError(err error) bool {
6262
return false
6363
}
6464

65-
// IsGenericDownstreamError checks if an error is a generic downstream error
66-
func IsGenericDownstreamError(err error) bool {
67-
if err == nil {
68-
return false
69-
}
70-
71-
errStr := strings.ToLower(err.Error())
72-
genericDownstreamErrors := []string{
73-
"invalid memory address",
74-
"nil pointer dereference",
75-
}
76-
77-
for _, genericErr := range genericDownstreamErrors {
78-
if strings.Contains(errStr, genericErr) {
79-
return true
80-
}
81-
}
82-
83-
return false
84-
}
85-
8665
// ClassifyError determines the appropriate error source and type for SQL errors
8766
func ClassifyError(err error) (backend.ErrorSource, error) {
8867
if err == nil {
8968
return backend.ErrorSourcePlugin, nil
9069
}
9170

92-
// Check for generic downstream errors first
93-
if IsGenericDownstreamError(err) {
94-
return backend.ErrorSourceDownstream, err
95-
}
96-
9771
// Check for PGX v5 specific connection errors
9872
if IsPGXConnectionError(err) {
9973
// These are typically downstream connection issues

query.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (q *DBQuery) Run(ctx context.Context, query *Query, args ...interface{}) (d
8484

8585
if errors.Is(err, context.Canceled) {
8686
errType = context.Canceled
87-
errSource = backend.ErrorSourcePlugin
87+
errSource = backend.ErrorSourceDownstream
8888
} else if IsPGXConnectionError(err) {
8989
errType = ErrorPGXLifecycle
9090
errSource = backend.ErrorSourceDownstream
@@ -322,11 +322,6 @@ func isProcessingDownstreamError(err error) bool {
322322
}
323323
}
324324

325-
// Check for generic downstream errors
326-
if IsGenericDownstreamError(err) {
327-
return true
328-
}
329-
330325
// Check for PGX connection errors
331326
if IsPGXConnectionError(err) {
332327
return true

query_test.go

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ func TestPGXErrorClassification(t *testing.T) {
242242
{
243243
name: "nil pointer dereference",
244244
errorMsg: "runtime error: invalid memory address or nil pointer dereference",
245-
expectedSource: backend.ErrorSourceDownstream,
246-
expectedIsPGX: false, // Now handled as generic downstream error
245+
expectedSource: backend.ErrorSourcePlugin,
246+
expectedIsPGX: false,
247247
},
248248
{
249249
name: "connection closed",
@@ -297,56 +297,3 @@ func TestPGXErrorClassification(t *testing.T) {
297297
})
298298
}
299299
}
300-
301-
func TestIsGenericDownstreamError(t *testing.T) {
302-
tests := []struct {
303-
name string
304-
errorMsg string
305-
expected bool
306-
}{
307-
{
308-
name: "nil pointer dereference",
309-
errorMsg: "runtime error: invalid memory address or nil pointer dereference",
310-
expected: true,
311-
},
312-
{
313-
name: "invalid memory address",
314-
errorMsg: "runtime error: invalid memory address",
315-
expected: true,
316-
},
317-
{
318-
name: "nil pointer dereference uppercase",
319-
errorMsg: "NIL POINTER DEREFERENCE",
320-
expected: true,
321-
},
322-
{
323-
name: "regular SQL error",
324-
errorMsg: "syntax error at position 1",
325-
expected: false,
326-
},
327-
{
328-
name: "connection error",
329-
errorMsg: "connection closed",
330-
expected: false,
331-
},
332-
{
333-
name: "nil error",
334-
errorMsg: "",
335-
expected: false,
336-
},
337-
}
338-
339-
for _, tt := range tests {
340-
t.Run(tt.name, func(t *testing.T) {
341-
var err error
342-
if tt.errorMsg != "" {
343-
err = errors.New(tt.errorMsg)
344-
}
345-
346-
result := IsGenericDownstreamError(err)
347-
if result != tt.expected {
348-
t.Errorf("IsGenericDownstreamError(%v) = %v, expected %v", tt.errorMsg, result, tt.expected)
349-
}
350-
})
351-
}
352-
}

0 commit comments

Comments
 (0)