mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
When implicitly converting string fields to numbers the string-to-number conversion error was not sent to the client. Added code to send the conversion error as warning. We also need to prevent generation of warnings from the places where val_xxx() methods are called for the sole purpose of updating the Item::null_value flag. To achieve that a special function is added (and called) : update_null_value(). This function will set the no_errors flag and will call val_xxx(). The warning generation in Field_string::val_xxx() will use the flag when generating the conversion warnings. mysql-test/r/compare.result: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - non-convertible strings in arithmetic operations mysql-test/r/func_gconcat.result: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - non-convertible strings in arithmetic operations mysql-test/r/func_group.result: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - non-convertible strings in arithmetic operations mysql-test/r/type_varchar.result: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - test case mysql-test/t/type_varchar.test: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - test case sql/field.cc: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - send conversion warning to the client sql/item.cc: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - send conversion warning to the client sql/item.h: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - added a special function to explicitly update the null_value sql/item_func.h: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - added a special function to explicitly update the null_value sql/item_subselect.h: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - added a special function to explicitly update the null_value sql/item_sum.cc: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - added a special function to explicitly update the null_value sql/item_sum.h: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - added a special function to explicitly update the null_value sql/sql_string.h: BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0) - send conversion warning to the client
This commit is contained in:
parent
1019dd404c
commit
9221a5482b
13 changed files with 183 additions and 24 deletions
|
|
@ -46,6 +46,10 @@ create table t1 (a tinyint(1),b binary(1));
|
|||
insert into t1 values (0x01,0x01);
|
||||
select * from t1 where a=b;
|
||||
a b
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||
select * from t1 where a=b and b=0x01;
|
||||
a b
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||
drop table if exists t1;
|
||||
|
|
|
|||
|
|
@ -64,11 +64,49 @@ grp group_concat(a order by a,d+c-ascii(c)-a)
|
|||
1 1
|
||||
2 2,3
|
||||
3 4,5,6,7,8,9
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'c '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'E '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'C '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'D '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'c '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'D '
|
||||
select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp;
|
||||
grp group_concat(a order by d+c-ascii(c),a)
|
||||
1 1
|
||||
2 3,2
|
||||
3 7,8,4,6,9,5
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'c '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'E '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'C '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'D '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'd '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'c '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'D '
|
||||
select grp,group_concat(c order by 1) from t1 group by grp;
|
||||
grp group_concat(c order by 1)
|
||||
1 a
|
||||
|
|
|
|||
|
|
@ -62,6 +62,13 @@ NULL NULL
|
|||
1 7
|
||||
2 20.25
|
||||
3 45.483163247594
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'a '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'c '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'C '
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'E '
|
||||
create table t2 (grp int, a bigint unsigned, c char(10));
|
||||
insert into t2 select grp,max(a)+max(grp),max(c) from t1 group by grp;
|
||||
replace into t2 select grp, a, c from t1 limit 2,1;
|
||||
|
|
|
|||
|
|
@ -453,3 +453,38 @@ id name_id id en cz
|
|||
2 3 2 en string 2 cz string 2
|
||||
3 3 3 en string 3 cz string 3
|
||||
drop table t1, t2, t3;
|
||||
CREATE TABLE t1 (a CHAR(2));
|
||||
INSERT INTO t1 VALUES (10), (50), (30), ('1a'), (60), ('t');
|
||||
SELECT a,(a + 0) FROM t1 ORDER BY a;
|
||||
a (a + 0)
|
||||
10 10
|
||||
1a 1
|
||||
30 30
|
||||
50 50
|
||||
60 60
|
||||
t 0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1a'
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 't '
|
||||
SELECT a,(a DIV 2) FROM t1 ORDER BY a;
|
||||
a (a DIV 2)
|
||||
10 5
|
||||
1a 0
|
||||
30 15
|
||||
50 25
|
||||
60 30
|
||||
t 0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: '1a'
|
||||
Warning 1292 Truncated incorrect INTEGER value: 't '
|
||||
SELECT a,CAST(a AS SIGNED) FROM t1 ORDER BY a;
|
||||
a CAST(a AS SIGNED)
|
||||
10 10
|
||||
1a 1
|
||||
30 30
|
||||
50 50
|
||||
60 60
|
||||
t 0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: '1a'
|
||||
Warning 1292 Truncated incorrect INTEGER value: 't'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue