(r *readBuf, q string)
| 125 | ) |
| 126 | |
| 127 | func parseError(r *readBuf, q string) *Error { |
| 128 | err := &Error{query: q} |
| 129 | for t := r.byte(); t != 0; t = r.byte() { |
| 130 | msg := r.string() |
| 131 | switch t { |
| 132 | case 'S': |
| 133 | err.Severity = msg |
| 134 | case 'C': |
| 135 | err.Code = pqerror.Code(msg) |
| 136 | case 'M': |
| 137 | err.Message = msg |
| 138 | case 'D': |
| 139 | err.Detail = msg |
| 140 | case 'H': |
| 141 | err.Hint = msg |
| 142 | case 'P': |
| 143 | err.Position = msg |
| 144 | case 'p': |
| 145 | err.InternalPosition = msg |
| 146 | case 'q': |
| 147 | err.InternalQuery = msg |
| 148 | case 'W': |
| 149 | err.Where = msg |
| 150 | case 's': |
| 151 | err.Schema = msg |
| 152 | case 't': |
| 153 | err.Table = msg |
| 154 | case 'c': |
| 155 | err.Column = msg |
| 156 | case 'd': |
| 157 | err.DataTypeName = msg |
| 158 | case 'n': |
| 159 | err.Constraint = msg |
| 160 | case 'F': |
| 161 | err.File = msg |
| 162 | case 'L': |
| 163 | err.Line = msg |
| 164 | case 'R': |
| 165 | err.Routine = msg |
| 166 | } |
| 167 | } |
| 168 | return err |
| 169 | } |
| 170 | |
| 171 | // Fatal returns true if the Error Severity is fatal. |
| 172 | func (e *Error) Fatal() bool { return e.Severity == pqerror.SeverityFatal } |
searching dependent graphs…