From fc16a1d334fa33cfaf68f941ce2498173ced591d Mon Sep 17 00:00:00 2001 From: Sushil Kumar Gupta Date: Thu, 19 May 2022 14:27:12 +0200 Subject: [PATCH 1/2] Implement stringer interface --- error.go | 12 +++++++++--- token.go | 8 ++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/error.go b/error.go index 09964b87..58575c35 100644 --- a/error.go +++ b/error.go @@ -14,7 +14,7 @@ type Error struct { Number int32 State uint8 Class uint8 - Message string + Message Message ServerName string ProcName string LineNo int32 @@ -23,8 +23,14 @@ type Error struct { All []Error } +type Message string + func (e Error) Error() string { - return "mssql: " + e.Message + return "mssql: " + e.Message.String() +} + +func (m Message) String() string { + return string(m) } // SQLErrorNumber returns the SQL Server error number. @@ -41,7 +47,7 @@ func (e Error) SQLErrorClass() uint8 { } func (e Error) SQLErrorMessage() string { - return e.Message + return e.Message.String() } func (e Error) SQLErrorServerName() string { diff --git a/token.go b/token.go index 43039d3d..939e61b5 100644 --- a/token.go +++ b/token.go @@ -601,7 +601,7 @@ func parseError72(r *tdsBuffer) (res Error) { res.Number = r.int32() res.State = r.byte() res.Class = r.byte() - res.Message = r.UsVarChar() + res.Message = Message(r.UsVarChar()) res.ServerName = r.BVarChar() res.ProcName = r.BVarChar() res.LineNo = r.int32() @@ -615,7 +615,7 @@ func parseInfo(r *tdsBuffer) (res Error) { res.Number = r.int32() res.State = r.byte() res.Class = r.byte() - res.Message = r.UsVarChar() + res.Message = Message(r.UsVarChar()) res.ServerName = r.BVarChar() res.ProcName = r.BVarChar() res.LineNo = r.int32() @@ -773,7 +773,7 @@ func processSingleResponse(ctx context.Context, sess *tdsSession, ch chan tokenS } errs = append(errs, err) if sess.logFlags&logErrors != 0 { - sess.logger.Log(ctx, msdsn.LogErrors, err.Message) + sess.logger.Log(ctx, msdsn.LogErrors, err.Message.String()) } if outs.msgq != nil { _ = sqlexp.ReturnMessageEnqueue(ctx, outs.msgq, sqlexp.MsgError{Error: err}) @@ -784,7 +784,7 @@ func processSingleResponse(ctx context.Context, sess *tdsSession, ch chan tokenS sess.logger.Log(ctx, msdsn.LogDebug, fmt.Sprintf("got INFO %d %s", info.Number, info.Message)) } if sess.logFlags&logMessages != 0 { - sess.logger.Log(ctx, msdsn.LogMessages, info.Message) + sess.logger.Log(ctx, msdsn.LogMessages, info.Message.String()) } if outs.msgq != nil { _ = sqlexp.ReturnMessageEnqueue(ctx, outs.msgq, sqlexp.MsgNotice{Message: info.Message}) From e5f6e8ba52a15fe54f280dc4377417b61651f278 Mon Sep 17 00:00:00 2001 From: Sushil Kumar Gupta Date: Thu, 19 May 2022 15:08:30 +0200 Subject: [PATCH 2/2] Convert to Message type before passing to MsgNotice --- queries_go19_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries_go19_test.go b/queries_go19_test.go index 12371094..0534dce7 100644 --- a/queries_go19_test.go +++ b/queries_go19_test.go @@ -1125,10 +1125,10 @@ func TestMessageQueue(t *testing.T) { active := true msgs := []interface{}{ - sqlexp.MsgNotice{Message: "msg1"}, + sqlexp.MsgNotice{Message: Message("msg1")}, sqlexp.MsgNext{}, sqlexp.MsgRowsAffected{Count: 1}, - sqlexp.MsgNotice{Message: "msg2"}, + sqlexp.MsgNotice{Message: Message("msg2")}, sqlexp.MsgNextResultSet{}, } i := 0