mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#30981 CHAR(0x41 USING ucs2) doesn't add leading zero
Bug#30982 CHAR(..USING..) can return a not-well-formed string Bug#30986 Character set introducer followed by a HEX string can return bad result check_well_formed_result moved to Item from Item_str_func fixed Item_func_char::val_str for proper ucs symbols converting added check for well formed strings for correct conversion of constants with underscore charset mysql-test/r/ctype_ucs.result: test result mysql-test/r/ctype_utf8.result: test result mysql-test/t/ctype_ucs.test: test case mysql-test/t/ctype_utf8.test: test case sql/item.cc: check_well_formed_result() moved from Item_str_func sql/item.h: check_well_formed_result() moved from Item_str_func sql/item_strfunc.cc: check_well_formed_result moved to Item fixed Item_func_char::val_str for proper ucs symbols converting sql/item_strfunc.h: check_well_formed_result moved to Item sql/sql_yacc.yy: added check for well formed string
This commit is contained in:
@ -922,4 +922,7 @@ ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_gen
|
||||
select * from t1 where a=if(b<10,_ucs2 0x0062,_ucs2 0x00C0);
|
||||
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (ucs2_general_ci,COERCIBLE) for operation '='
|
||||
drop table t1;
|
||||
select hex(char(0x41 using ucs2));
|
||||
hex(char(0x41 using ucs2))
|
||||
0041
|
||||
End of 5.0 tests
|
||||
|
@ -1538,12 +1538,12 @@ char(53647 using utf8)
|
||||
я
|
||||
select char(0xff,0x8f using utf8);
|
||||
char(0xff,0x8f using utf8)
|
||||
<EFBFBD><EFBFBD>
|
||||
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF8F'
|
||||
select convert(char(0xff,0x8f) using utf8);
|
||||
convert(char(0xff,0x8f) using utf8)
|
||||
<EFBFBD><EFBFBD>
|
||||
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF8F'
|
||||
set sql_mode=traditional;
|
||||
@ -1730,3 +1730,65 @@ i
|
||||
1
|
||||
н1234567890
|
||||
DROP TABLE t1, t2;
|
||||
set sql_mode=traditional;
|
||||
select hex(char(0xFF using utf8));
|
||||
hex(char(0xFF using utf8))
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(convert(0xFF using utf8));
|
||||
hex(convert(0xFF using utf8))
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 0x616263FF);
|
||||
hex(_utf8 0x616263FF)
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 X'616263FF');
|
||||
hex(_utf8 X'616263FF')
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 B'001111111111');
|
||||
hex(_utf8 B'001111111111')
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
select (_utf8 X'616263FF');
|
||||
(_utf8 X'616263FF')
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
set sql_mode=default;
|
||||
select hex(char(0xFF using utf8));
|
||||
hex(char(0xFF using utf8))
|
||||
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(convert(0xFF using utf8));
|
||||
hex(convert(0xFF using utf8))
|
||||
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 0x616263FF);
|
||||
hex(_utf8 0x616263FF)
|
||||
616263
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 X'616263FF');
|
||||
hex(_utf8 X'616263FF')
|
||||
616263
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 B'001111111111');
|
||||
hex(_utf8 B'001111111111')
|
||||
03
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
select (_utf8 X'616263FF');
|
||||
(_utf8 X'616263FF')
|
||||
abc
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
|
@ -651,4 +651,9 @@ select * from t1 where a=if(b<10,_ucs2 0x00C0,_ucs2 0x0062);
|
||||
select * from t1 where a=if(b<10,_ucs2 0x0062,_ucs2 0x00C0);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#30981 CHAR(0x41 USING ucs2) doesn't add leading zero
|
||||
#
|
||||
select hex(char(0x41 using ucs2));
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1403,3 +1403,22 @@ SELECT b FROM t2 UNION SELECT c FROM t1;
|
||||
SELECT i FROM t2 UNION SELECT c FROM t1;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
#
|
||||
# Bug#30982: CHAR(..USING..) can return a not-well-formed string
|
||||
# Bug #30986: Character set introducer followed by a HEX string can return bad result
|
||||
#
|
||||
set sql_mode=traditional;
|
||||
select hex(char(0xFF using utf8));
|
||||
select hex(convert(0xFF using utf8));
|
||||
select hex(_utf8 0x616263FF);
|
||||
select hex(_utf8 X'616263FF');
|
||||
select hex(_utf8 B'001111111111');
|
||||
select (_utf8 X'616263FF');
|
||||
set sql_mode=default;
|
||||
select hex(char(0xFF using utf8));
|
||||
select hex(convert(0xFF using utf8));
|
||||
select hex(_utf8 0x616263FF);
|
||||
select hex(_utf8 X'616263FF');
|
||||
select hex(_utf8 B'001111111111');
|
||||
select (_utf8 X'616263FF');
|
||||
|
Reference in New Issue
Block a user