in phoenix/phoenix.go [118:147]
func (a Adapter) ErrorResponseToResponseError(err *message.ErrorResponse) errors.ResponseError {
var (
errorCode int
sqlState string
)
re := regexp.MustCompile(`ERROR (\d+) \(([0-9a-zA-Z]+)\)`)
codes := re.FindStringSubmatch(err.ErrorMessage)
if len(codes) > 1 {
errorCode, _ = strconv.Atoi(codes[1])
}
if len(codes) > 2 {
sqlState = codes[2]
}
return errors.ResponseError{
Exceptions: err.Exceptions,
ErrorMessage: err.ErrorMessage,
Severity: int8(err.Severity),
ErrorCode: errors.ErrorCode(errorCode),
SqlState: errors.SQLState(sqlState),
Metadata: &errors.RPCMetadata{
ServerAddress: message.ServerAddressFromMetadata(err),
},
Name: errorCodeNames[uint32(errorCode)],
}
}