drop table if exists t1, t2;
SET SQL_WARNINGS=1;
create table t1 (a int);
create table t1 (a int);
ERROR 42S01: Table 't1' already exists
show count(*) errors;
@@session.error_count
1
show errors;
Level	Code	Message
Error	1050	Table 't1' already exists
show warnings;
Level	Code	Message
Error	1050	Table 't1' already exists
create table t2(a int) default charset qwerty;
ERROR 42000: Unknown character set: 'qwerty'
show count(*) errors;
@@session.error_count
1
show errors;
Level	Code	Message
Error	1115	Unknown character set: 'qwerty'
create table t (i);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
show count(*) errors;
@@session.error_count
1
show errors;
Level	Code	Message
Error	1064	You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
insert into t1 values (1);
insert into t1 values ("hej");
Warnings:
Warning	1366	Incorrect integer value: 'hej' for column 'a' at row 1
insert into t1 values ("hej"),("d�");
Warnings:
Warning	1366	Incorrect integer value: 'hej' for column 'a' at row 1
Warning	1366	Incorrect integer value: 'd�' for column 'a' at row 2
set SQL_WARNINGS=1;
insert into t1 values ("hej");
Warnings:
Warning	1366	Incorrect integer value: 'hej' for column 'a' at row 1
insert into t1 values ("hej"),("d�");
Warnings:
Warning	1366	Incorrect integer value: 'hej' for column 'a' at row 1
Warning	1366	Incorrect integer value: 'd�' for column 'a' at row 2
drop table t1;
set SQL_WARNINGS=0;
drop temporary table if exists not_exists;
Warnings:
Note	1051	Unknown table 'test.not_exists'
drop table if exists not_exists_table;
Warnings:
Note	1051	Unknown table 'test.not_exists_table'
show warnings limit 1;
Level	Code	Message
Note	1051	Unknown table 'test.not_exists_table'
drop database if exists not_exists_db;
Warnings:
Note	1008	Can't drop database 'not_exists_db'; database doesn't exist
show count(*) warnings;
@@session.warning_count
1
create table t1(id int);
create table if not exists t1(id int);
Warnings:
Note	1050	Table 't1' already exists
select @@warning_count;
@@warning_count
1
drop table t1;
create table t1(a tinyint, b int not null, c date, d char(5));
load data infile '../../std_data/warnings_loaddata.dat' into table t1 fields terminated by ',';
Warnings:
Warning	1263	Column set to default value; NULL supplied to NOT NULL column 'b' at row 2
Warning	1265	Data truncated for column 'd' at row 3
Warning	1265	Data truncated for column 'c' at row 4
Warning	1261	Row 5 doesn't contain data for all columns
Warning	1265	Data truncated for column 'b' at row 6
Warning	1262	Row 7 was truncated; it contained more data than there were input columns
Warning	1264	Out of range value for column 'a' at row 8
select @@warning_count;
@@warning_count
7
drop table t1;
create table t1(a tinyint NOT NULL, b tinyint unsigned, c char(5));
insert into t1 values(NULL,100,'mysql'),(10,-1,'mysql ab'),(500,256,'open source'),(20,NULL,'test');
Warnings:
Warning	1048	Column 'a' cannot be null
Warning	1264	Out of range value for column 'b' at row 2
Warning	1265	Data truncated for column 'c' at row 2
Warning	1264	Out of range value for column 'a' at row 3
Warning	1264	Out of range value for column 'b' at row 3
Warning	1265	Data truncated for column 'c' at row 3
alter table t1 modify c char(4);
Warnings:
Warning	1265	Data truncated for column 'c' at row 1
Warning	1265	Data truncated for column 'c' at row 2
alter table t1 add d char(2);
update t1 set a=NULL where a=10;
Warnings:
Warning	1048	Column 'a' cannot be null
update t1 set c='mysql ab' where c='test';
Warnings:
Warning	1265	Data truncated for column 'c' at row 4
update t1 set d=c;
Warnings:
Warning	1265	Data truncated for column 'd' at row 1
Warning	1265	Data truncated for column 'd' at row 2
Warning	1265	Data truncated for column 'd' at row 3
Warning	1265	Data truncated for column 'd' at row 4
create table t2(a tinyint NOT NULL, b char(3));
insert into t2 select b,c from t1;
Warnings:
Warning	1265	Data truncated for column 'b' at row 1
Warning	1265	Data truncated for column 'b' at row 2
Warning	1265	Data truncated for column 'b' at row 3
Warning	1048	Column 'a' cannot be null
Warning	1265	Data truncated for column 'b' at row 4
insert into t2(b) values('mysqlab');
Warnings:
Warning	1364	Field 'a' doesn't have a default value
Warning	1265	Data truncated for column 'b' at row 1
set sql_warnings=1;
insert into t2(b) values('mysqlab');
Warnings:
Warning	1364	Field 'a' doesn't have a default value
Warning	1265	Data truncated for column 'b' at row 1
set sql_warnings=0;
drop table t1, t2;
create table t1(a char(10));
alter table t1 add b char;
set max_error_count=10;
update t1 set b=a;
Warnings:
Warning	1265	Data truncated for column 'b' at row 1
Warning	1265	Data truncated for column 'b' at row 2
Warning	1265	Data truncated for column 'b' at row 3
Warning	1265	Data truncated for column 'b' at row 4
Warning	1265	Data truncated for column 'b' at row 5
Warning	1265	Data truncated for column 'b' at row 6
Warning	1265	Data truncated for column 'b' at row 7
Warning	1265	Data truncated for column 'b' at row 8
Warning	1265	Data truncated for column 'b' at row 9
Warning	1265	Data truncated for column 'b' at row 10
select @@warning_count;
@@warning_count
50
set max_error_count=0;
show variables like 'max_error_count';
Variable_name	Value
max_error_count	0
update t1 set b='hi';
Warnings:
select @@warning_count;
@@warning_count
50
show warnings;
Level	Code	Message
set max_error_count=65535;
show variables like 'max_error_count';
Variable_name	Value
max_error_count	65535
set max_error_count=10;
show variables like 'max_error_count';
Variable_name	Value
max_error_count	10
drop table t1;
create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc';
Warnings:
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 1
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 2
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 3
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 4
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 5
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 6
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 7
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 8
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 9
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 2, 1;
Level	Code	Message
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 3
show warnings limit 0, 10;
Level	Code	Message
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 1
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 2
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 3
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 4
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 5
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 6
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 7
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 8
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 9
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 9, 1;
Level	Code	Message
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 10, 1;
Level	Code	Message
show warnings limit 9, 2;
Level	Code	Message
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 10
show warnings limit 0, 0;
Level	Code	Message
show warnings limit 1;
Level	Code	Message
Warning	1366	Incorrect integer value: 'abc' for column 'a' at row 1
show warnings limit 0;
Level	Code	Message
show warnings limit 1, 0;
Level	Code	Message
select * from t1 limit 0;
a
select * from t1 limit 1, 0;
a
select * from t1 limit 0, 0;
a
drop table t1;
End of 4.1 tests
CREATE TABLE t1( f1 CHAR(20) );
CREATE TABLE t2( f1 CHAR(20), f2 CHAR(25) );
CREATE TABLE t3( f1 CHAR(20), f2 CHAR(25), f3 DATE );
INSERT INTO t1 VALUES ( 'a`' );
INSERT INTO t2 VALUES ( 'a`', 'a`' );
INSERT INTO t3 VALUES ( 'a`', 'a`', '1000-01-1' );
DROP PROCEDURE IF EXISTS sp1;
Warnings:
Note	1305	PROCEDURE test.sp1 does not exist
DROP PROCEDURE IF EXISTS sp2;
Warnings:
Note	1305	PROCEDURE test.sp2 does not exist
DROP PROCEDURE IF EXISTS sp3;
Warnings:
Note	1305	PROCEDURE test.sp3 does not exist
CREATE PROCEDURE sp1()
BEGIN
DECLARE x NUMERIC ZEROFILL;
SELECT f1 INTO x FROM t1 LIMIT 1;
END//
CREATE PROCEDURE sp2()
BEGIN
DECLARE x NUMERIC ZEROFILL;
SELECT f1 INTO x FROM t2 LIMIT 1;
END//
CREATE PROCEDURE sp3()
BEGIN
DECLARE x NUMERIC ZEROFILL;
SELECT f1 INTO x FROM t3 LIMIT 1;
END//
CALL sp1();
Warnings:
Warning	1366	Incorrect decimal value: 'a`' for column 'x' at row 1
CALL sp2();
Warnings:
Warning	1366	Incorrect decimal value: 'a`' for column 'x' at row 1
CALL sp3();
Warnings:
Warning	1366	Incorrect decimal value: 'a`' for column 'x' at row 1
DROP PROCEDURE IF EXISTS sp1;
CREATE PROCEDURE sp1()
BEGIN
declare x numeric unsigned zerofill;
SELECT f1 into x from t2 limit 1;
END//
CALL sp1();
Warnings:
Warning	1366	Incorrect decimal value: 'a`' for column 'x' at row 1
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP PROCEDURE sp1;
DROP PROCEDURE sp2;
DROP PROCEDURE sp3;
create table t1 (c_char char(255), c_varchar varchar(255), c_tinytext tinytext);
create table t2 (c_tinyblob tinyblob);
set @c = repeat(' ', 256);
set @q = repeat('q', 256);
set sql_mode = '';
insert into t1 values(@c, @c, @c);
Warnings:
Note	1265	Data truncated for column 'c_varchar' at row 1
Note	1265	Data truncated for column 'c_tinytext' at row 1
insert into t2 values(@c);
Warnings:
Warning	1265	Data truncated for column 'c_tinyblob' at row 1
insert into t1 values(@q, @q, @q);
Warnings:
Warning	1265	Data truncated for column 'c_char' at row 1
Warning	1265	Data truncated for column 'c_varchar' at row 1
Warning	1265	Data truncated for column 'c_tinytext' at row 1
insert into t2 values(@q);
Warnings:
Warning	1265	Data truncated for column 'c_tinyblob' at row 1
set sql_mode = 'traditional';
insert into t1 values(@c, @c, @c);
Warnings:
Note	1265	Data truncated for column 'c_varchar' at row 1
Note	1265	Data truncated for column 'c_tinytext' at row 1
insert into t2 values(@c);
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
insert into t1 values(@q, NULL, NULL);
ERROR 22001: Data too long for column 'c_char' at row 1
insert into t1 values(NULL, @q, NULL);
ERROR 22001: Data too long for column 'c_varchar' at row 1
insert into t1 values(NULL, NULL, @q);
ERROR 22001: Data too long for column 'c_tinytext' at row 1
insert into t2 values(@q);
ERROR 22001: Data too long for column 'c_tinyblob' at row 1
drop table t1, t2;
DROP TABLE t1;
ERROR 42S02: Unknown table 'test.t1'
SHOW ERRORS;
Level	Code	Message
Error	1051	Unknown table 'test.t1'
End of 5.0 tests
set sql_mode = default;
select CAST(a AS DECIMAL(13,5)) FROM (SELECT '' as a) t;
CAST(a AS DECIMAL(13,5))
0.00000
Warnings:
Warning	1918	Encountered illegal value '' when converting to DECIMAL
Warning	1292	Truncated incorrect DECIMAL value: ''
create table t1 (a integer unsigned);
insert into t1 values (1),(-1),(0),(-2);
Warnings:
Warning	1264	Out of range value for column 'a' at row 2
Warning	1264	Out of range value for column 'a' at row 4
drop table t1;
End of 5.1 tests

-- Bug#55847

DROP TABLE IF EXISTS t1;
DROP FUNCTION IF EXISTS f1;
CREATE TABLE t1(a INT UNIQUE);
CREATE FUNCTION f1(x INT) RETURNS INT
BEGIN
INSERT INTO t1 VALUES(x);
INSERT INTO t1 VALUES(x);
RETURN x;
END|

SHOW TABLES WHERE f1(11) = 11;
ERROR 23000: Duplicate entry '11' for key 'a'

SHOW WARNINGS;
Level	Code	Message
Error	1062	Duplicate entry '11' for key 'a'

DROP TABLE t1;
DROP FUNCTION f1;