mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge mysql.com:/home/gluh/MySQL/Merge/5.0-opt
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
This commit is contained in:
commit
97ce1f8cf1
5 changed files with 31 additions and 46 deletions
|
@ -1742,25 +1742,13 @@ 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'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 X'616263FF');
|
||||
hex(_utf8 X'616263FF')
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 B'001111111111');
|
||||
hex(_utf8 B'001111111111')
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select (_utf8 X'616263FF');
|
||||
(_utf8 X'616263FF')
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1300 Invalid utf8 character string: 'FF'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
set sql_mode=default;
|
||||
select hex(char(0xFF using utf8));
|
||||
hex(char(0xFF using utf8))
|
||||
|
@ -1773,22 +1761,10 @@ 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'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 X'616263FF');
|
||||
hex(_utf8 X'616263FF')
|
||||
616263
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select hex(_utf8 B'001111111111');
|
||||
hex(_utf8 B'001111111111')
|
||||
03
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select (_utf8 X'616263FF');
|
||||
(_utf8 X'616263FF')
|
||||
abc
|
||||
Warnings:
|
||||
Warning 1300 Invalid utf8 character string: 'FF'
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
|
|
|
@ -1412,14 +1412,22 @@ DROP TABLE t1, t2;
|
|||
set sql_mode=traditional;
|
||||
select hex(char(0xFF using utf8));
|
||||
select hex(convert(0xFF using utf8));
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select hex(_utf8 0x616263FF);
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select hex(_utf8 X'616263FF');
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select hex(_utf8 B'001111111111');
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select (_utf8 X'616263FF');
|
||||
set sql_mode=default;
|
||||
select hex(char(0xFF using utf8));
|
||||
select hex(convert(0xFF using utf8));
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select hex(_utf8 0x616263FF);
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select hex(_utf8 X'616263FF');
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select hex(_utf8 B'001111111111');
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select (_utf8 X'616263FF');
|
||||
|
|
12
sql/item.cc
12
sql/item.cc
|
@ -4313,7 +4313,7 @@ bool Item::is_datetime()
|
|||
}
|
||||
|
||||
|
||||
String *Item::check_well_formed_result(String *str)
|
||||
String *Item::check_well_formed_result(String *str, bool send_error)
|
||||
{
|
||||
/* Check whether we got a well-formed string */
|
||||
CHARSET_INFO *cs= str->charset();
|
||||
|
@ -4329,8 +4329,14 @@ String *Item::check_well_formed_result(String *str)
|
|||
uint diff= str->length() - wlen;
|
||||
set_if_smaller(diff, 3);
|
||||
octet2hex(hexbuf, str->ptr() + wlen, diff);
|
||||
if (thd->variables.sql_mode &
|
||||
(MODE_STRICT_TRANS_TABLES | MODE_STRICT_ALL_TABLES))
|
||||
if (send_error)
|
||||
{
|
||||
my_error(ER_INVALID_CHARACTER_STRING, MYF(0),
|
||||
cs->csname, hexbuf);
|
||||
return 0;
|
||||
}
|
||||
if ((thd->variables.sql_mode &
|
||||
(MODE_STRICT_TRANS_TABLES | MODE_STRICT_ALL_TABLES)))
|
||||
{
|
||||
level= MYSQL_ERROR::WARN_LEVEL_ERROR;
|
||||
null_value= 1;
|
||||
|
|
|
@ -1003,7 +1003,7 @@ public:
|
|||
bool is_datetime();
|
||||
virtual Field::geometry_type get_geometry_type() const
|
||||
{ return Field::GEOM_GEOMETRY; };
|
||||
String *check_well_formed_result(String *str);
|
||||
String *check_well_formed_result(String *str, bool send_error= 0);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -9935,15 +9935,11 @@ literal:
|
|||
str ? str->ptr() : "",
|
||||
str ? str->length() : 0,
|
||||
$1);
|
||||
if ($$)
|
||||
if (!$$ || !$$->check_well_formed_result(&$$->str_value, TRUE))
|
||||
{
|
||||
((Item_string *) $$)->set_repertoire_from_value();
|
||||
if (!$$->check_well_formed_result(&$$->str_value))
|
||||
{
|
||||
$$= new Item_null();
|
||||
$$->set_name(NULL, 0, system_charset_info);
|
||||
}
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
((Item_string *) $$)->set_repertoire_from_value();
|
||||
}
|
||||
| UNDERSCORE_CHARSET BIN_NUM
|
||||
{
|
||||
|
@ -9959,10 +9955,9 @@ literal:
|
|||
str ? str->ptr() : "",
|
||||
str ? str->length() : 0,
|
||||
$1);
|
||||
if ($$ && !$$->check_well_formed_result(&$$->str_value))
|
||||
if (!$$ || !$$->check_well_formed_result(&$$->str_value, TRUE))
|
||||
{
|
||||
$$= new Item_null();
|
||||
$$->set_name(NULL, 0, system_charset_info);
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
}
|
||||
| DATE_SYM text_literal { $$ = $2; }
|
||||
|
|
Loading…
Add table
Reference in a new issue