From 8916cb9e4d6e55741d03353b082aedd523e2cb21 Mon Sep 17 00:00:00 2001 From: lysu Date: Thu, 12 Sep 2019 15:34:56 +0800 Subject: [PATCH 1/3] server: add sql to com_exec/com_fetch dispatch error log --- server/conn_stmt.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/server/conn_stmt.go b/server/conn_stmt.go index 96c8220db4de2..57653811f58bd 100644 --- a/server/conn_stmt.go +++ b/server/conn_stmt.go @@ -176,12 +176,12 @@ func (cc *clientConn) handleStmtExecute(ctx context.Context, data []byte) (err e err = parseStmtArgs(args, stmt.BoundParams(), nullBitmaps, stmt.GetParamsType(), paramValues) stmt.Reset() if err != nil { - return errors.Annotatef(err, "%s", cc.preparedStmt2String(stmtID)) + return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) } } rs, err := stmt.Execute(ctx, args...) if err != nil { - return errors.Annotatef(err, "%s", cc.preparedStmt2String(stmtID)) + return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) } if rs == nil { return cc.writeOK() @@ -199,7 +199,11 @@ func (cc *clientConn) handleStmtExecute(ctx context.Context, data []byte) (err e // explicitly flush columnInfo to client. return cc.flush() } - return cc.writeResultset(ctx, rs, true, 0, 0) + err = cc.writeResultset(ctx, rs, true, 0, 0) + if err != nil { + return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) + } + return nil } // maxFetchSize constants @@ -216,8 +220,8 @@ func (cc *clientConn) handleStmtFetch(ctx context.Context, data []byte) (err err stmt := cc.ctx.GetStatement(int(stmtID)) if stmt == nil { - return mysql.NewErr(mysql.ErrUnknownStmtHandler, - strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch") + return errors.WithMessage(mysql.NewErr(mysql.ErrUnknownStmtHandler, + strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch"), cc.preparedStmt2String(stmtID)) } sql := "" if prepared, ok := cc.ctx.GetStatement(int(stmtID)).(*TiDBStatement); ok { @@ -226,11 +230,15 @@ func (cc *clientConn) handleStmtFetch(ctx context.Context, data []byte) (err err cc.ctx.SetProcessInfo(sql, time.Now(), mysql.ComStmtExecute, 0) rs := stmt.GetResultSet() if rs == nil { - return mysql.NewErr(mysql.ErrUnknownStmtHandler, - strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch_rs") + return errors.WithMessage(mysql.NewErr(mysql.ErrUnknownStmtHandler, + strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch_rs"), cc.preparedStmt2String(stmtID)) } - return cc.writeResultset(ctx, rs, true, mysql.ServerStatusCursorExists, int(fetchSize)) + err = cc.writeResultset(ctx, rs, true, mysql.ServerStatusCursorExists, int(fetchSize)) + if err != nil { + return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) + } + return nil } func parseStmtFetchCmd(data []byte) (uint32, uint32, error) { @@ -571,5 +579,5 @@ func (cc *clientConn) preparedStmt2String(stmtID uint32) string { if prepared, ok := sv.PreparedStmts[stmtID]; ok { return prepared.Stmt.Text() + sv.GetExecuteArgumentsInfo() } - return fmt.Sprintf("prepared statement not found, ID: %d", stmtID) + return "prepared statement not found, ID: " + strconv.FormatUint(uint64(stmtID), 10) } From 44d90417283a4cc2f91967b9d62680b3ae1b06e2 Mon Sep 17 00:00:00 2001 From: lysu Date: Thu, 12 Sep 2019 17:28:27 +0800 Subject: [PATCH 2/3] use annotate --- server/conn_stmt.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/server/conn_stmt.go b/server/conn_stmt.go index 57653811f58bd..d4af9ee5e70b0 100644 --- a/server/conn_stmt.go +++ b/server/conn_stmt.go @@ -176,12 +176,12 @@ func (cc *clientConn) handleStmtExecute(ctx context.Context, data []byte) (err e err = parseStmtArgs(args, stmt.BoundParams(), nullBitmaps, stmt.GetParamsType(), paramValues) stmt.Reset() if err != nil { - return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) + return errors.Annotate(err, cc.preparedStmt2String(stmtID)) } } rs, err := stmt.Execute(ctx, args...) if err != nil { - return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) + return errors.Annotate(err, cc.preparedStmt2String(stmtID)) } if rs == nil { return cc.writeOK() @@ -201,7 +201,7 @@ func (cc *clientConn) handleStmtExecute(ctx context.Context, data []byte) (err e } err = cc.writeResultset(ctx, rs, true, 0, 0) if err != nil { - return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) + return errors.Annotate(err, cc.preparedStmt2String(stmtID)) } return nil } @@ -220,7 +220,7 @@ func (cc *clientConn) handleStmtFetch(ctx context.Context, data []byte) (err err stmt := cc.ctx.GetStatement(int(stmtID)) if stmt == nil { - return errors.WithMessage(mysql.NewErr(mysql.ErrUnknownStmtHandler, + return errors.Annotate(mysql.NewErr(mysql.ErrUnknownStmtHandler, strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch"), cc.preparedStmt2String(stmtID)) } sql := "" @@ -230,13 +230,14 @@ func (cc *clientConn) handleStmtFetch(ctx context.Context, data []byte) (err err cc.ctx.SetProcessInfo(sql, time.Now(), mysql.ComStmtExecute, 0) rs := stmt.GetResultSet() if rs == nil { - return errors.WithMessage(mysql.NewErr(mysql.ErrUnknownStmtHandler, + return errors.Annotate(mysql.NewErr(mysql.ErrUnknownStmtHandler, strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch_rs"), cc.preparedStmt2String(stmtID)) } err = cc.writeResultset(ctx, rs, true, mysql.ServerStatusCursorExists, int(fetchSize)) + err = errors.New("12121") if err != nil { - return errors.WithMessage(err, cc.preparedStmt2String(stmtID)) + return errors.Annotate(err, cc.preparedStmt2String(stmtID)) } return nil } From 84dcf924ce9d26c89dd5f3d1997e1e33cf3f3878 Mon Sep 17 00:00:00 2001 From: lysu Date: Thu, 12 Sep 2019 19:19:16 +0800 Subject: [PATCH 3/3] ... --- server/conn_stmt.go | 1 - 1 file changed, 1 deletion(-) diff --git a/server/conn_stmt.go b/server/conn_stmt.go index d4af9ee5e70b0..29b2d120b5037 100644 --- a/server/conn_stmt.go +++ b/server/conn_stmt.go @@ -235,7 +235,6 @@ func (cc *clientConn) handleStmtFetch(ctx context.Context, data []byte) (err err } err = cc.writeResultset(ctx, rs, true, mysql.ServerStatusCursorExists, int(fetchSize)) - err = errors.New("12121") if err != nil { return errors.Annotate(err, cc.preparedStmt2String(stmtID)) }