Bug#13832772 ASSERTION `THD->IS_ERROR() || KILL_ERRNO'
We are trying to sort a lot of text/blob fields, so the buffer is indeed too small. Memory available = thd->variables.sortbuff_size = 262144 min_sort_memory = param.sort_length*MERGEBUFF2 = 292245 So the decision to abort the query is correct. filesort() calls my_error(), the error is reported. But, since we have DELETE IGNORE ... the error is converted to a warning by THD::raise_condition filesort currently expects an error to be recorded in the THD diagnostics area. If we lift this restriction (remove the assert) we end up in the familiar void Protocol::end_statement() default: DBUG_ASSERT(0); The solution seems to be to call my_error(ME_FATALERROR) in filesort, so that the error is propagated as an error rather than a warning.
This commit is contained in:
parent
7a4e8d9959
commit
cfea7c7dfc
@ -31,3 +31,47 @@ SET DEBUG_SYNC='now SIGNAL filesort_killed';
|
|||||||
# connection default
|
# connection default
|
||||||
SET DEBUG_SYNC= "RESET";
|
SET DEBUG_SYNC= "RESET";
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#13832772 ASSERTION `THD->IS_ERROR() || KILL_ERRNO'
|
||||||
|
# FAILED IN FILESORT/MYSQL_DELETE
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 BLOB,
|
||||||
|
c2 TEXT,
|
||||||
|
c3 TEXT,
|
||||||
|
c4 TEXT,
|
||||||
|
c5 TEXT,
|
||||||
|
c6 TEXT,
|
||||||
|
c7 TEXT,
|
||||||
|
c8 BLOB,
|
||||||
|
c9 TEXT,
|
||||||
|
c19 TEXT,
|
||||||
|
pk INT,
|
||||||
|
c20 TEXT,
|
||||||
|
c21 BLOB,
|
||||||
|
c22 TEXT,
|
||||||
|
c23 TEXT,
|
||||||
|
c24 TEXT,
|
||||||
|
c25 TEXT,
|
||||||
|
c26 BLOB,
|
||||||
|
c27 TEXT,
|
||||||
|
c28 TEXT,
|
||||||
|
primary key (pk)
|
||||||
|
) ENGINE=InnoDB
|
||||||
|
;
|
||||||
|
CALL mtr.add_suppression("Out of sort memory");
|
||||||
|
DELETE IGNORE FROM t1 ORDER BY c26,c7,c23,c4,c25,c5,c20,
|
||||||
|
c19,c21,c8,c1,c27,c28,c3,c9,c22,c24,c6,c2,pk LIMIT 2;
|
||||||
|
ERROR HY001: Out of sort memory, consider increasing server sort buffer size
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Error 1038 Out of sort memory, consider increasing server sort buffer size
|
||||||
|
Error 1028 Sort aborted: Out of sort memory, consider increasing server sort buffer size
|
||||||
|
DELETE FROM t1 ORDER BY c26,c7,c23,c4,c25,c5,c20,
|
||||||
|
c19,c21,c8,c1,c27,c28,c3,c9,c22,c24,c6,c2,pk LIMIT 2;
|
||||||
|
ERROR HY001: Out of sort memory, consider increasing server sort buffer size
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Error 1038 Out of sort memory, consider increasing server sort buffer size
|
||||||
|
Error 1028 Sort aborted: Out of sort memory, consider increasing server sort buffer size
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -57,3 +57,47 @@ disconnect con2;
|
|||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
SET DEBUG_SYNC= "RESET";
|
SET DEBUG_SYNC= "RESET";
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#13832772 ASSERTION `THD->IS_ERROR() || KILL_ERRNO'
|
||||||
|
--echo # FAILED IN FILESORT/MYSQL_DELETE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 BLOB,
|
||||||
|
c2 TEXT,
|
||||||
|
c3 TEXT,
|
||||||
|
c4 TEXT,
|
||||||
|
c5 TEXT,
|
||||||
|
c6 TEXT,
|
||||||
|
c7 TEXT,
|
||||||
|
c8 BLOB,
|
||||||
|
c9 TEXT,
|
||||||
|
c19 TEXT,
|
||||||
|
pk INT,
|
||||||
|
c20 TEXT,
|
||||||
|
c21 BLOB,
|
||||||
|
c22 TEXT,
|
||||||
|
c23 TEXT,
|
||||||
|
c24 TEXT,
|
||||||
|
c25 TEXT,
|
||||||
|
c26 BLOB,
|
||||||
|
c27 TEXT,
|
||||||
|
c28 TEXT,
|
||||||
|
primary key (pk)
|
||||||
|
) ENGINE=InnoDB
|
||||||
|
;
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Out of sort memory");
|
||||||
|
|
||||||
|
--error ER_OUT_OF_SORTMEMORY
|
||||||
|
DELETE IGNORE FROM t1 ORDER BY c26,c7,c23,c4,c25,c5,c20,
|
||||||
|
c19,c21,c8,c1,c27,c28,c3,c9,c22,c24,c6,c2,pk LIMIT 2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
|
--error ER_OUT_OF_SORTMEMORY
|
||||||
|
DELETE FROM t1 ORDER BY c26,c7,c23,c4,c25,c5,c20,
|
||||||
|
c19,c21,c8,c1,c27,c28,c3,c9,c22,c24,c6,c2,pk LIMIT 2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -235,7 +235,7 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
|
|||||||
sort_keys= table_sort.sort_keys;
|
sort_keys= table_sort.sort_keys;
|
||||||
if (memavl < min_sort_memory)
|
if (memavl < min_sort_memory)
|
||||||
{
|
{
|
||||||
my_error(ER_OUT_OF_SORTMEMORY,MYF(ME_ERROR+ME_WAITTANG));
|
my_error(ER_OUT_OF_SORTMEMORY,MYF(ME_ERROR + ME_FATALERROR));
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (open_cached_file(&buffpek_pointers,mysql_tmpdir,TEMP_PREFIX,
|
if (open_cached_file(&buffpek_pointers,mysql_tmpdir,TEMP_PREFIX,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user