mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #11747102 30771: LOG MORE INFO ABOUT THREADS KILL'D AND SORT ABORTED MESSAGES
mysql-test/r/filesort_debug.result: New test case. mysql-test/t/filesort_debug.test: New test case. sql/filesort.cc: thd->killed does not imply thd->is_error(), so test for that separately.
This commit is contained in:
@ -14,3 +14,20 @@ DELETE FROM t1 ORDER BY (f1(10)) LIMIT 1;
|
|||||||
ERROR 42000: Incorrect number of arguments for FUNCTION test.f1; expected 0, got 1
|
ERROR 42000: Incorrect number of arguments for FUNCTION test.f1; expected 0, got 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
|
#
|
||||||
|
# Bug #11747102
|
||||||
|
# 30771: LOG MORE INFO ABOUT THREADS KILL'D AND SORT ABORTED MESSAGES
|
||||||
|
#
|
||||||
|
# connection 1
|
||||||
|
CREATE TABLE t1(f0 int auto_increment primary key, f1 int);
|
||||||
|
INSERT INTO t1(f1) VALUES (0),(1),(2),(3),(4),(5);
|
||||||
|
SET DEBUG_SYNC='filesort_start SIGNAL filesort_started WAIT_FOR filesort_killed';
|
||||||
|
# Sending: (not reaped since connection is killed later)
|
||||||
|
SELECT * FROM t1 ORDER BY f1 ASC, f0;
|
||||||
|
# connection 2
|
||||||
|
SET DEBUG_SYNC='now WAIT_FOR filesort_started';
|
||||||
|
KILL @id;
|
||||||
|
SET DEBUG_SYNC='now SIGNAL filesort_killed';
|
||||||
|
# connection default
|
||||||
|
SET DEBUG_SYNC= "RESET";
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
|
--source include/count_sessions.inc
|
||||||
|
|
||||||
SET @old_debug= @@session.debug;
|
SET @old_debug= @@session.debug;
|
||||||
|
|
||||||
@ -21,3 +23,37 @@ DELETE FROM t1 ORDER BY (f1(10)) LIMIT 1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #11747102
|
||||||
|
--echo # 30771: LOG MORE INFO ABOUT THREADS KILL'D AND SORT ABORTED MESSAGES
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
connect (con1, localhost, root);
|
||||||
|
connect (con2, localhost, root);
|
||||||
|
|
||||||
|
--echo # connection 1
|
||||||
|
connection con1;
|
||||||
|
CREATE TABLE t1(f0 int auto_increment primary key, f1 int);
|
||||||
|
INSERT INTO t1(f1) VALUES (0),(1),(2),(3),(4),(5);
|
||||||
|
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
|
||||||
|
SET DEBUG_SYNC='filesort_start SIGNAL filesort_started WAIT_FOR filesort_killed';
|
||||||
|
--echo # Sending: (not reaped since connection is killed later)
|
||||||
|
--send SELECT * FROM t1 ORDER BY f1 ASC, f0
|
||||||
|
|
||||||
|
--echo # connection 2
|
||||||
|
connection con2;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
SET DEBUG_SYNC='now WAIT_FOR filesort_started';
|
||||||
|
KILL @id;
|
||||||
|
SET DEBUG_SYNC='now SIGNAL filesort_killed';
|
||||||
|
|
||||||
|
--echo # connection default
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
|
--source include/wait_until_count_sessions.inc
|
||||||
|
SET DEBUG_SYNC= "RESET";
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "probes_mysql.h"
|
#include "probes_mysql.h"
|
||||||
#include "sql_test.h" // TEST_filesort
|
#include "sql_test.h" // TEST_filesort
|
||||||
#include "opt_range.h" // SQL_SELECT
|
#include "opt_range.h" // SQL_SELECT
|
||||||
|
#include "debug_sync.h"
|
||||||
|
|
||||||
/// How to write record_ref.
|
/// How to write record_ref.
|
||||||
#define WRITE_REF(file,from) \
|
#define WRITE_REF(file,from) \
|
||||||
@ -123,6 +124,7 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||||||
Item_subselect *subselect= tab ? tab->containing_subselect() : 0;
|
Item_subselect *subselect= tab ? tab->containing_subselect() : 0;
|
||||||
|
|
||||||
MYSQL_FILESORT_START(table->s->db.str, table->s->table_name.str);
|
MYSQL_FILESORT_START(table->s->db.str, table->s->table_name.str);
|
||||||
|
DEBUG_SYNC(thd, "filesort_start");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Release InnoDB's adaptive hash index latch (if holding) before
|
Release InnoDB's adaptive hash index latch (if holding) before
|
||||||
@ -325,12 +327,13 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||||||
}
|
}
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(thd->is_error());
|
int kill_errno= thd->killed_errno();
|
||||||
|
DBUG_ASSERT(thd->is_error() || kill_errno);
|
||||||
my_printf_error(ER_FILSORT_ABORT,
|
my_printf_error(ER_FILSORT_ABORT,
|
||||||
"%s: %s",
|
"%s: %s",
|
||||||
MYF(ME_ERROR + ME_WAITTANG),
|
MYF(ME_ERROR + ME_WAITTANG),
|
||||||
ER_THD(thd, ER_FILSORT_ABORT),
|
ER_THD(thd, ER_FILSORT_ABORT),
|
||||||
thd->stmt_da->message());
|
kill_errno ? ER(kill_errno) : thd->stmt_da->message());
|
||||||
|
|
||||||
if (global_system_variables.log_warnings > 1)
|
if (global_system_variables.log_warnings > 1)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user