mirror of
https://github.com/MariaDB/server.git
synced 2025-08-23 03:54:27 +03:00
The problem was that the introduction of max-thread-mem-used can cause an allocation error very early, even before mysql_parse() is called. As mysql_parse() calls thd->reset_for_next_command(), which called clear_error(), the error number was lost. Fixed by adding an option to have unique messages for each KILL signal and change max-thread-mem-used to use this new feature. This removes a lot of problems with the original approach, where one could get errors signaled silenty almost any time. ixed by moving clear_error() from reset_for_next_command() to do_command(), before any memory allocation for the thread. Related changes: - reset_for_next_command() now have an optional parameter if we should call clear_error() or not. By default it's called, but not anymore from dispatch_command() which was the original problem. - Added optional paramater to clear_error() to force calling of reset_diagnostics_area(). Before clear_error() only called reset_diagnostics_area() if there was no error, so we normally called reset_diagnostics_area() twice. - This change removed several duplicated calls to clear_error() when starting a query. - Reset max_mem_used on COM_QUIT, to protect against kill during quit. - Use fatal_error() instead of setting is_fatal_error (cleanup) - Set fatal_error if max_thead_mem_used is signaled. (Same logic we use for other places where we are out of resources)
175 lines
6.3 KiB
Plaintext
175 lines
6.3 KiB
Plaintext
drop table if exists t1;
|
||
insert into t1 values(1);
|
||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||
delete from t1;
|
||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||
update t1 set a=1;
|
||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||
create table t1 (a int);
|
||
select count(test.t1.b) from t1;
|
||
ERROR 42S22: Unknown column 'test.t1.b' in 'field list'
|
||
select count(not_existing_database.t1) from t1;
|
||
ERROR 42S22: Unknown column 'not_existing_database.t1' in 'field list'
|
||
select count(not_existing_database.t1.a) from t1;
|
||
ERROR 42S22: Unknown column 'not_existing_database.t1.a' in 'field list'
|
||
select count(not_existing_database.t1.a) from not_existing_database.t1;
|
||
Got one of the listed errors
|
||
select 1 from t1 order by 2;
|
||
ERROR 42S22: Unknown column '2' in 'order clause'
|
||
select 1 from t1 group by 2;
|
||
ERROR 42S22: Unknown column '2' in 'group statement'
|
||
select 1 from t1 order by t1.b;
|
||
ERROR 42S22: Unknown column 't1.b' in 'order clause'
|
||
select count(*),b from t1;
|
||
ERROR 42S22: Unknown column 'b' in 'field list'
|
||
drop table t1;
|
||
create table t1 (a int(256));
|
||
ERROR 42000: Display width out of range for 'a' (max = 255)
|
||
set sql_mode='traditional';
|
||
create table t1 (a varchar(66000));
|
||
ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead
|
||
set sql_mode=default;
|
||
CREATE TABLE t1 (a INT);
|
||
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
||
a
|
||
INSERT INTO t1 VALUES(1);
|
||
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
||
a
|
||
1
|
||
INSERT INTO t1 VALUES(2),(3);
|
||
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
||
a
|
||
1
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1( a INT );
|
||
SELECT b FROM t1;
|
||
ERROR 42S22: Unknown column 'b' in 'field list'
|
||
SHOW ERRORS;
|
||
Level Code Message
|
||
Error 1054 Unknown column 'b' in 'field list'
|
||
CREATE TABLE t2 SELECT b FROM t1;
|
||
ERROR 42S22: Unknown column 'b' in 'field list'
|
||
SHOW ERRORS;
|
||
Level Code Message
|
||
Error 1054 Unknown column 'b' in 'field list'
|
||
INSERT INTO t1 SELECT b FROM t1;
|
||
ERROR 42S22: Unknown column 'b' in 'field list'
|
||
DROP TABLE t1;
|
||
flush status;
|
||
drop table if exists t1, t2;
|
||
create table t1 (a int unique);
|
||
create table t2 (a int);
|
||
drop function if exists f1;
|
||
Warnings:
|
||
Note 1305 FUNCTION test.f1 does not exist
|
||
drop function if exists f2;
|
||
Warnings:
|
||
Note 1305 FUNCTION test.f2 does not exist
|
||
create function f1() returns int
|
||
begin
|
||
insert into t1 (a) values (1);
|
||
insert into t1 (a) values (1);
|
||
return 1;
|
||
end|
|
||
create function f2() returns int
|
||
begin
|
||
insert into t2 (a) values (1);
|
||
return 2;
|
||
end|
|
||
flush status;
|
||
select f1(), f2();
|
||
ERROR 23000: Duplicate entry '1' for key 'a'
|
||
show status like 'Com_insert';
|
||
Variable_name Value
|
||
Com_insert 2
|
||
select * from t1;
|
||
a
|
||
1
|
||
select * from t2;
|
||
a
|
||
drop table t1;
|
||
drop table t2;
|
||
drop function f1;
|
||
drop function f2;
|
||
SET NAMES utf8;
|
||
SET sql_quote_show_create= _binary x'5452C39C45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR\xC3\x9CE'
|
||
SET sql_quote_show_create= _utf8 x'5452C39C45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
|
||
SET sql_quote_show_create=_latin1 x'5452DC45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
|
||
SET sql_quote_show_create='TRÜE';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
|
||
SET sql_quote_show_create=TRÜE;
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
|
||
SET NAMES latin1;
|
||
SET sql_quote_show_create= _binary x'5452C39C45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR\xC3\x9CE'
|
||
SET sql_quote_show_create= _utf8 x'5452C39C45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR<54>E'
|
||
SET sql_quote_show_create=_latin1 x'5452DC45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR<54>E'
|
||
SET sql_quote_show_create='TR<54>E';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR<54>E'
|
||
SET sql_quote_show_create=TR<54>E;
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR<54>E'
|
||
SET NAMES binary;
|
||
SET sql_quote_show_create= _binary x'5452C39C45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TR\xC3\x9CE'
|
||
SET sql_quote_show_create= _utf8 x'5452C39C45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
|
||
SET sql_quote_show_create=_latin1 x'5452DC45';
|
||
ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE'
|
||
#
|
||
# Bug#52430 Incorrect key in the error message for duplicate key error involving BINARY type
|
||
#
|
||
CREATE TABLE t1(c1 BINARY(10), c2 BINARY(10), c3 BINARY(10),
|
||
PRIMARY KEY(c1,c2,c3));
|
||
INSERT INTO t1 (c1,c2,c3) VALUES('abc','abc','abc');
|
||
INSERT INTO t1 (c1,c2,c3) VALUES('abc','abc','abc');
|
||
ERROR 23000: Duplicate entry 'abc-abc-abc' for key 'PRIMARY'
|
||
DROP TABLE t1;
|
||
CREATE TABLE t1 (f1 VARBINARY(19) PRIMARY KEY);
|
||
INSERT INTO t1 VALUES ('abc\0\0');
|
||
INSERT INTO t1 VALUES ('abc\0\0');
|
||
ERROR 23000: Duplicate entry 'abc\x00\x00' for key 'PRIMARY'
|
||
DROP TABLE t1;
|
||
#
|
||
# Bug#57882: Item_func_conv_charset::val_str(String*):
|
||
# Assertion `fixed == 1' failed
|
||
#
|
||
SELECT (CONVERT('0' USING latin1) IN (CHAR(COT('v') USING utf8),''));
|
||
ERROR 22003: DOUBLE value is out of range in 'cot('v')'
|
||
SET NAMES utf8 COLLATE utf8_latvian_ci ;
|
||
SELECT UPDATEXML(-73 * -2465717823867977728,@@global.auto_increment_increment,null);
|
||
ERROR 22003: BIGINT value is out of range in '(-(73) * -(2465717823867977728))'
|
||
#
|
||
# End Bug#57882
|
||
#
|
||
CREATE TABLE t1 (a INT);
|
||
CREATE TABLE t2(a INT PRIMARY KEY, b INT);
|
||
SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||
REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||
UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||
INSERT INTO t2 VALUES (1,0) ON DUPLICATE KEY UPDATE
|
||
b=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
||
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
||
INSERT INTO t2(a,b) VALUES (1,0) ON DUPLICATE KEY UPDATE
|
||
b=(SELECT VALUES(a)+2 FROM t1);
|
||
DROP TABLE t1, t2;
|
||
#
|
||
# MDEV-492: incorrect error check before sending OK in mysql_update
|
||
#
|
||
CREATE TABLE t1 (a CHAR(3), b BLOB);
|
||
UPDATE t1 SET a = 'new'
|
||
WHERE COLUMN_CREATE( 1, 'v', 1, 'w' ) IS NULL;
|
||
ERROR 22007: Illegal value used as argument of dynamic column function
|
||
drop table t1;
|
||
set max_session_mem_used = 50000;
|
||
select * from seq_1_to_1000;
|
||
set max_session_mem_used = 8192;
|
||
select * from seq_1_to_1000;
|