From: Tor Didriksen Date: January 19 2011 2:55pm Subject: bzr commit into mysql-trunk branch (tor.didriksen:3535) Bug#36022 List-Archive: http://lists.mysql.com/commits/129214 X-Bug: 36022 Message-Id: <20110119145537.C7C3D3727@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8334459457766466478==" --===============8334459457766466478== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/didrik/repo/trunk-sortaborted/ based on revid:bar@stripped 3535 Tor Didriksen 2011-01-19 Bug #36022 please log more information about "Sort aborted" queries Write an additional warning message to the server log, explaining why a sort operation is aborted. The output in mysqld.err will look something like: [ERROR] bin-dbg/sql/mysqld: Sort aborted [Warning] Sort aborted : Out of memory (Needed 24 bytes) [ERROR] bin-dbg/sql/mysqld: Out of sort memory; increase server sort buffer size [ERROR] bin-dbg/sql/mysqld: Sort aborted [Warning] Sort aborted : Out of sort memory; increase server sort buffer size [ERROR] bin-dbg/sql/mysqld: Sort aborted [Warning] Sort aborted : Incorrect number of arguments for FUNCTION test.f1; expected 0, got 1 @ include/my_sys.h Update comment for ME_NOREFRESH @ mysql-test/r/filesort_debug.result New test case. @ mysql-test/t/filesort_debug.test New test case. @ sql/filesort.cc Output an explanation using the error message from the THD Diagnostics_area. @ sql/protocol.cc Do not DBUG_RETURN(function_call_with DBUG_RETURN) as it messes up the call stack in the debug output. @ sql/unireg.h Remove unused/confusing ERRMAPP macro. modified: include/my_sys.h mysql-test/r/filesort_debug.result mysql-test/t/filesort_debug.test sql/filesort.cc sql/protocol.cc sql/unireg.h === modified file 'include/my_sys.h' --- a/include/my_sys.h 2011-01-17 09:52:59 +0000 +++ b/include/my_sys.h 2011-01-19 14:55:33 +0000 @@ -104,7 +104,7 @@ typedef struct my_aio_result { #define ME_HOLDTANG 8 /* Don't delete last keys */ #define ME_WAITTOT 16 /* Wait for errtime secs of for a action */ #define ME_WAITTANG 32 /* Wait for a user action */ -#define ME_NOREFRESH 64 /* Dont refresh screen */ +#define ME_NOREFRESH 64 /* Write the error message to error log */ #define ME_NOINPUT 128 /* Dont use the input libary */ #define ME_COLOUR1 ((1 << ME_HIGHBYTE)) /* Possibly error-colours */ #define ME_COLOUR2 ((2 << ME_HIGHBYTE)) === modified file 'mysql-test/r/filesort_debug.result' --- a/mysql-test/r/filesort_debug.result 2011-01-10 13:23:11 +0000 +++ b/mysql-test/r/filesort_debug.result 2011-01-19 14:55:33 +0000 @@ -1,11 +1,27 @@ # # Bug#59331 filesort with priority queue: handling of out-of-memory # +SET @old_debug = @@session.debug; CREATE TABLE t1(f0 int auto_increment primary key, f1 int, f2 varchar(200)); INSERT INTO t1(f1, f2) VALUES (0,"0"),(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5"), (6,"6"),(7,"7"),(8,"8"),(9,"9"),(10,"10"); -set debug= '+d,bounded_queue_init_fail'; +set session debug= '+d,bounded_queue_init_fail'; SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 1; ERROR HY000: Out of memory (Needed NN bytes) +set session debug=@old_debug; DROP TABLE t1; +# +# Bug#36022 please log more information about "Sort aborted" queries +# +CREATE TABLE t1(f0 int auto_increment primary key, f1 int); +INSERT INTO t1(f1) VALUES (0),(1),(2),(3),(4),(5); +set session debug= '+d,make_char_array_fail'; +SELECT * FROM t1 ORDER BY f1 ASC, f0; +ERROR HY001: Out of sort memory; increase server sort buffer size +set session debug=@old_debug; +CREATE FUNCTION f1() RETURNS INT RETURN 1; +DELETE FROM t1 ORDER BY (f1(10)) LIMIT 1; +ERROR 42000: Incorrect number of arguments for FUNCTION test.f1; expected 0, got 1 +DROP TABLE t1; +DROP FUNCTION f1; === modified file 'mysql-test/t/filesort_debug.test' --- a/mysql-test/t/filesort_debug.test 2011-01-10 13:23:11 +0000 +++ b/mysql-test/t/filesort_debug.test 2011-01-19 14:55:33 +0000 @@ -4,14 +4,36 @@ --echo # Bug#59331 filesort with priority queue: handling of out-of-memory --echo # +SET @old_debug = @@session.debug; + CREATE TABLE t1(f0 int auto_increment primary key, f1 int, f2 varchar(200)); INSERT INTO t1(f1, f2) VALUES (0,"0"),(1,"1"),(2,"2"),(3,"3"),(4,"4"),(5,"5"), (6,"6"),(7,"7"),(8,"8"),(9,"9"),(10,"10"); -set debug= '+d,bounded_queue_init_fail'; +set session debug= '+d,bounded_queue_init_fail'; --replace_regex /Needed [0-9]* bytes/Needed NN bytes/ --error 5 SELECT * FROM t1 ORDER BY f1 ASC, f0 LIMIT 1; +set session debug=@old_debug; + +DROP TABLE t1; + +--echo # +--echo # Bug#36022 please log more information about "Sort aborted" queries +--echo # + +CREATE TABLE t1(f0 int auto_increment primary key, f1 int); +INSERT INTO t1(f1) VALUES (0),(1),(2),(3),(4),(5); + +set session debug= '+d,make_char_array_fail'; +--error ER_OUT_OF_SORTMEMORY +SELECT * FROM t1 ORDER BY f1 ASC, f0; +set session debug=@old_debug; + +CREATE FUNCTION f1() RETURNS INT RETURN 1; +--error ER_SP_WRONG_NO_OF_ARGS +DELETE FROM t1 ORDER BY (f1(10)) LIMIT 1; DROP TABLE t1; +DROP FUNCTION f1; === modified file 'sql/filesort.cc' --- a/sql/filesort.cc 2011-01-11 09:09:21 +0000 +++ b/sql/filesort.cc 2011-01-19 14:55:33 +0000 @@ -356,8 +356,16 @@ ha_rows filesort(THD *thd, TABLE *table, } } if (error) - my_message(ER_FILSORT_ABORT, ER(ER_FILSORT_ABORT), + { + DBUG_ASSERT(thd->stmt_da->status() == Diagnostics_area::DA_ERROR); + my_message(ER_FILSORT_ABORT, + ER_THD(thd, ER_FILSORT_ABORT), MYF(ME_ERROR+ME_WAITTANG)); + // Add explanation about why we aborted to the server log. + sql_print_warning("%s : %s", + ER_THD(thd, ER_FILSORT_ABORT), + thd->stmt_da->message()); + } else statistic_add(thd->status_var.filesort_rows, (ulong) num_rows, &LOCK_status); @@ -408,6 +416,9 @@ static void make_char_array(FILESORT_INF DBUG_PRINT("info", ("num_records %u length %u", num_records, length)); + DBUG_EXECUTE_IF("make_char_array_fail", + DBUG_SET("+d,simulate_out_of_memory");); + if (!info->sort_keys) info->sort_keys= (uchar**) my_malloc(num_records * (length + sizeof(uchar*)), MYF(0)); === modified file 'sql/protocol.cc' --- a/sql/protocol.cc 2010-12-21 12:23:49 +0000 +++ b/sql/protocol.cc 2011-01-19 14:55:33 +0000 @@ -543,9 +543,10 @@ bool Protocol::send_ok(uint server_statu const char *message) { DBUG_ENTER("Protocol::send_ok"); - - DBUG_RETURN(net_send_ok(thd, server_status, statement_warn_count, - affected_rows, last_insert_id, message)); + const bool retval= + net_send_ok(thd, server_status, statement_warn_count, + affected_rows, last_insert_id, message); + DBUG_RETURN(retval); } @@ -558,8 +559,8 @@ bool Protocol::send_ok(uint server_statu bool Protocol::send_eof(uint server_status, uint statement_warn_count) { DBUG_ENTER("Protocol::send_eof"); - - DBUG_RETURN(net_send_eof(thd, server_status, statement_warn_count)); + const bool retval= net_send_eof(thd, server_status, statement_warn_count); + DBUG_RETURN(retval); } @@ -573,8 +574,8 @@ bool Protocol::send_error(uint sql_errno const char *sql_state) { DBUG_ENTER("Protocol::send_error"); - - DBUG_RETURN(net_send_error_packet(thd, sql_errno, err_msg, sql_state)); + const bool retval= net_send_error_packet(thd, sql_errno, err_msg, sql_state); + DBUG_RETURN(retval); } === modified file 'sql/unireg.h' --- a/sql/unireg.h 2010-07-16 21:00:50 +0000 +++ b/sql/unireg.h 2011-01-19 14:55:33 +0000 @@ -56,8 +56,6 @@ typedef struct st_ha_create_information #define ER_THD_OR_DEFAULT(thd,X) ((thd) ? ER_THD(thd, X) : ER_DEFAULT(X)) -#define ERRMAPP 1 /* Errormap f|r my_error */ - #define ME_INFO (ME_HOLDTANG+ME_OLDWIN+ME_NOREFRESH) #define ME_ERROR (ME_BELL+ME_OLDWIN+ME_NOREFRESH) #define MYF_RW MYF(MY_WME+MY_NABP) /* Vid my_read & my_write */ --===============8334459457766466478== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # y2giknbe0b96711o # target_branch: file:///export/home/didrik/repo/trunk-sortaborted/ # testament_sha1: f59a2acdae097a225fdc12e3250201fcd1b5d604 # timestamp: 2011-01-19 15:55:37 +0100 # base_revision_id: bar@stripped # # Begin bundle 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 O1ulKQeS9lyusSthnffLZLQ/xdyRThQkAFzG7YA= --===============8334459457766466478==--