Skip to content

Commit

Permalink
Merge pull request #1080 from drakkan/sqlstate
Browse files Browse the repository at this point in the history
error: add SQLState
  • Loading branch information
rafiss committed May 11, 2022
2 parents 006a3f4 + ef3111e commit 30d9faf
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
5 changes: 5 additions & 0 deletions error.go
Expand Up @@ -402,6 +402,11 @@ func (err *Error) Fatal() bool {
return err.Severity == Efatal
}

// SQLState returns the SQLState of the error.
func (err *Error) SQLState() string {
return string(err.Code)
}

// Get implements the legacy PGError interface. New code should use the fields
// of the Error struct directly.
func (err *Error) Get(k byte) (v string) {
Expand Down
16 changes: 16 additions & 0 deletions go18_test.go
Expand Up @@ -334,3 +334,19 @@ func TestTxOptions(t *testing.T) {
t.Errorf("Expected error to mention isolation level, got %q", err)
}
}

func TestErrorSQLState(t *testing.T) {
r := readBuf([]byte{67, 52, 48, 48, 48, 49, 0, 0}) // 40001
err := parseError(&r)
var sqlErr errWithSQLState
if !errors.As(err, &sqlErr) {
t.Fatal("SQLState interface not satisfied")
}
if state := err.SQLState(); state != "40001" {
t.Fatalf("unexpected SQL state %v", state)
}
}

type errWithSQLState interface {
SQLState() string
}

0 comments on commit 30d9faf

Please sign in to comment.