func exec(se tidb.Session, sql string, args ...interface{}) (ast.RecordSet, error) { if len(args) == 0 { rs, err := se.Execute(sql) if err == nil && len(rs) > 0 { return rs[0], nil } return nil, err } stmtID, _, _, err := se.PrepareStmt(sql) if err != nil { return nil, err } rs, err := se.ExecutePreparedStmt(stmtID, args...) if err != nil { return nil, err } return rs, nil }