File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 11package mssql
22
33import (
4+ "bytes"
45 "database/sql/driver"
6+ "encoding/binary"
57 "fmt"
68)
79
@@ -23,6 +25,46 @@ type Error struct {
2325 All []Error
2426}
2527
28+ // Marshal marshals the error to the wire protocol token.
29+ func (e * Error ) Marshal () ([]byte , error ) {
30+ buf := bytes .NewBuffer ([]byte {
31+ byte (tokenError ),
32+ })
33+ length := 2 + // length
34+ 4 + // number
35+ 1 + // state
36+ 1 + // class
37+ (2 + 2 * len (e .Message )) + // message
38+ (1 + 2 * len (e .ServerName )) + // server name
39+ (1 + 2 * len (e .ProcName )) + // proc name
40+ 4 // line no
41+ if err := binary .Write (buf , binary .LittleEndian , uint16 (length )); err != nil {
42+ return nil , err
43+ }
44+ if err := binary .Write (buf , binary .LittleEndian , e .Number ); err != nil {
45+ return nil , err
46+ }
47+ if err := buf .WriteByte (e .State ); err != nil {
48+ return nil , err
49+ }
50+ if err := buf .WriteByte (e .Class ); err != nil {
51+ return nil , err
52+ }
53+ if err := writeUsVarChar (buf , e .Message ); err != nil {
54+ return nil , err
55+ }
56+ if err := writeBVarChar (buf , e .ServerName ); err != nil {
57+ return nil , err
58+ }
59+ if err := writeBVarChar (buf , e .ProcName ); err != nil {
60+ return nil , err
61+ }
62+ if err := binary .Write (buf , binary .LittleEndian , e .LineNo ); err != nil {
63+ return nil , err
64+ }
65+ return buf .Bytes (), nil
66+ }
67+
2668func (e Error ) Error () string {
2769 return "mssql: " + e .Message
2870}
You can’t perform that action at this time.
0 commit comments