mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
1bbe8c5e0f
MDEV-20589: Server still crashes in Field::set_warning_truncated_wrong_value - Use dbug_tmp_use_all_columns() to mark that all fields can be used - Remove field->is_stat_field (not needed) - Remove extra arguments to Field::clone() that should not be there - Safety fix for Field::set_warning_truncated_wrong_value() to not crash if table is zero in production builds (We have got crashes several times here so better to be safe than sorry). - Threat wrong character string warnings identical to other field conversion warnings. This removes some warnings we before got from internal conversion errors. There is no good reason why a user would get an error in case of 'key_field='wrong-utf8-string' but not for 'field=wrong-utf8-string'. The old code could also easily give thousands of no-sence warnings for one single statement.
110 lines
2.6 KiB
Text
110 lines
2.6 KiB
Text
#
|
|
# Bug when using comparions of strings and integers.
|
|
#
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
CREATE TABLE t1 (id CHAR(12) not null, PRIMARY KEY (id));
|
|
insert into t1 values ('000000000001'),('000000000002');
|
|
explain select * from t1 where id=000000000001;
|
|
select * from t1 where id=000000000001;
|
|
delete from t1 where id=000000000002;
|
|
select * from t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Check the following:
|
|
# "a" == "a "
|
|
# "a\0" < "a"
|
|
# "a\0" < "a "
|
|
|
|
SELECT 'a' = 'a ';
|
|
SELECT 'a\0' < 'a';
|
|
SELECT 'a\0' < 'a ';
|
|
SELECT 'a\t' < 'a';
|
|
SELECT 'a\t' < 'a ';
|
|
|
|
CREATE TABLE t1 (a char(10) not null);
|
|
INSERT INTO t1 VALUES ('a'),('a\0'),('a\t'),('a ');
|
|
SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
# Bug #8134: Comparison against CHAR(31) at end of string
|
|
SELECT CHAR(31) = '', '' = CHAR(31);
|
|
# Extra test
|
|
SELECT CHAR(30) = '', '' = CHAR(30);
|
|
|
|
# End of 4.1 tests
|
|
|
|
#
|
|
#Bug #21159: Optimizer: wrong result after AND with different data types
|
|
#
|
|
create table t1 (a tinyint(1),b binary(1));
|
|
insert into t1 values (0x01,0x01);
|
|
select * from t1 where a=b;
|
|
select * from t1 where a=b and b=0x01;
|
|
drop table if exists t1;
|
|
|
|
#
|
|
# Bug #31887: DML Select statement not returning same results when executed
|
|
# in version 5
|
|
#
|
|
|
|
CREATE TABLE t1 (b int(2) zerofill, c int(2) zerofill);
|
|
INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2);
|
|
|
|
SELECT CONCAT(b,c), CONCAT(b,c) = '0101' FROM t1;
|
|
|
|
EXPLAIN EXTENDED SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
|
SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
|
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t2 VALUES (1),(2);
|
|
|
|
SELECT a,
|
|
(SELECT COUNT(*) FROM t1
|
|
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
|
FROM t2 ORDER BY a;
|
|
|
|
EXPLAIN EXTENDED
|
|
SELECT a,
|
|
(SELECT COUNT(*) FROM t1
|
|
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
|
FROM t2 ORDER BY a;
|
|
|
|
DROP TABLE t1,t2;
|
|
|
|
#
|
|
# Bug #39353: Multiple conditions on timestamp column crashes server
|
|
#
|
|
|
|
CREATE TABLE t1 (a TIMESTAMP);
|
|
INSERT INTO t1 VALUES (NOW()),(NOW()),(NOW());
|
|
SELECT * FROM t1 WHERE a > '2008-01-01' AND a = '0000-00-00';
|
|
DROP TABLE t1;
|
|
|
|
--echo End of 5.0 tests
|
|
|
|
#
|
|
# Bug #11764818 57692: Crash in item_func_in::val_int() with ZEROFILL
|
|
#
|
|
|
|
CREATE TABLE t1(a INT ZEROFILL);
|
|
SELECT 1 FROM t1 WHERE t1.a IN (1, t1.a) AND t1.a=2;
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# Check what happens when comparing to long string
|
|
#
|
|
|
|
CREATE TABLE t1 (a char(2), index (a));
|
|
insert into t1 values ("aa"),("bb");
|
|
select * from t1 where a="aa";
|
|
select * from t1 where a="aaa";
|
|
select * from t1 where a="aa ";
|
|
select * from t1 where a>="aaa";
|
|
explain select * from t1 where a="aaa";
|
|
explain select * from t1 where a="aa ";
|
|
drop table t1;
|