Skip to content

Commit 45d7da0

Browse files
authored
server: add sql to com_exec/com_fetch dispatch error log (#12174) (#12191)
1 parent 2a4ecf9 commit 45d7da0

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

server/conn_stmt.go

+17-9
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,12 @@ func (cc *clientConn) handleStmtExecute(ctx context.Context, data []byte) (err e
176176
err = parseStmtArgs(args, stmt.BoundParams(), nullBitmaps, stmt.GetParamsType(), paramValues)
177177
stmt.Reset()
178178
if err != nil {
179-
return errors.Annotatef(err, "%s", cc.preparedStmt2String(stmtID))
179+
return errors.Annotate(err, cc.preparedStmt2String(stmtID))
180180
}
181181
}
182182
rs, err := stmt.Execute(ctx, args...)
183183
if err != nil {
184-
return errors.Annotatef(err, "%s", cc.preparedStmt2String(stmtID))
184+
return errors.Annotate(err, cc.preparedStmt2String(stmtID))
185185
}
186186
if rs == nil {
187187
return cc.writeOK()
@@ -199,7 +199,11 @@ func (cc *clientConn) handleStmtExecute(ctx context.Context, data []byte) (err e
199199
// explicitly flush columnInfo to client.
200200
return cc.flush()
201201
}
202-
return cc.writeResultset(ctx, rs, true, 0, 0)
202+
err = cc.writeResultset(ctx, rs, true, 0, 0)
203+
if err != nil {
204+
return errors.Annotate(err, cc.preparedStmt2String(stmtID))
205+
}
206+
return nil
203207
}
204208

205209
// maxFetchSize constants
@@ -216,8 +220,8 @@ func (cc *clientConn) handleStmtFetch(ctx context.Context, data []byte) (err err
216220

217221
stmt := cc.ctx.GetStatement(int(stmtID))
218222
if stmt == nil {
219-
return mysql.NewErr(mysql.ErrUnknownStmtHandler,
220-
strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch")
223+
return errors.Annotate(mysql.NewErr(mysql.ErrUnknownStmtHandler,
224+
strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch"), cc.preparedStmt2String(stmtID))
221225
}
222226
sql := ""
223227
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
226230
cc.ctx.SetProcessInfo(sql, time.Now(), mysql.ComStmtExecute, 0)
227231
rs := stmt.GetResultSet()
228232
if rs == nil {
229-
return mysql.NewErr(mysql.ErrUnknownStmtHandler,
230-
strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch_rs")
233+
return errors.Annotate(mysql.NewErr(mysql.ErrUnknownStmtHandler,
234+
strconv.FormatUint(uint64(stmtID), 10), "stmt_fetch_rs"), cc.preparedStmt2String(stmtID))
231235
}
232236

233-
return cc.writeResultset(ctx, rs, true, mysql.ServerStatusCursorExists, int(fetchSize))
237+
err = cc.writeResultset(ctx, rs, true, mysql.ServerStatusCursorExists, int(fetchSize))
238+
if err != nil {
239+
return errors.Annotate(err, cc.preparedStmt2String(stmtID))
240+
}
241+
return nil
234242
}
235243

236244
func parseStmtFetchCmd(data []byte) (uint32, uint32, error) {
@@ -571,5 +579,5 @@ func (cc *clientConn) preparedStmt2String(stmtID uint32) string {
571579
if prepared, ok := sv.PreparedStmts[stmtID]; ok {
572580
return prepared.Stmt.Text() + sv.GetExecuteArgumentsInfo()
573581
}
574-
return fmt.Sprintf("prepared statement not found, ID: %d", stmtID)
582+
return "prepared statement not found, ID: " + strconv.FormatUint(uint64(stmtID), 10)
575583
}

0 commit comments

Comments
 (0)