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.GetErrorMessage())
if len(codes) > 1 {
errorCode, _ = strconv.Atoi(codes[1])
}
if len(codes) > 2 {
sqlState = codes[2]
}
return errors.ResponseError{
Exceptions: err.GetExceptions(),
ErrorMessage: err.GetErrorMessage(),
Severity: int8(err.GetSeverity()),
ErrorCode: errors.ErrorCode(errorCode),
SqlState: errors.SQLState(sqlState),
Metadata: &errors.RPCMetadata{
ServerAddress: message.ServerAddressFromMetadata(err),
},
Name: errorCodeNames[uint32(errorCode)],
}
}