mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-16471 mysqldump throws "Variable 'sql_mode' can't be set to the value of 'NULL' (1231)"
This commit is contained in:
@@ -780,3 +780,27 @@ END;
|
|||||||
SET sql_mode=DEFAULT;
|
SET sql_mode=DEFAULT;
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1()
|
||||||
BEGIN
|
BEGIN
|
||||||
|
SELECT 1+1;
|
||||||
|
syntax error;
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
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 'error;
|
||||||
|
END' at line 4
|
||||||
|
#
|
||||||
|
# End of 10.2 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Start of 10.3 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV-16471 mysqldump throws "Variable 'sql_mode' can't be set to the value of 'NULL' (1231)"
|
||||||
|
#
|
||||||
|
SET sql_mode='ORACLE,EMPTY_STRING_IS_NULL';
|
||||||
|
SELECT @@sql_mode;
|
||||||
|
@@sql_mode
|
||||||
|
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,EMPTY_STRING_IS_NULL,SIMULTANEOUS_ASSIGNMENT
|
||||||
|
SELECT '' AS empty;
|
||||||
|
empty
|
||||||
|
NULL
|
||||||
|
SET sql_mode='';
|
||||||
|
SELECT @@sql_mode;
|
||||||
|
@@ -554,3 +554,26 @@ BEGIN
|
|||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
DELIMITER ;$$
|
DELIMITER ;$$
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.2 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.3 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16471 mysqldump throws "Variable 'sql_mode' can't be set to the value of 'NULL' (1231)"
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET sql_mode='ORACLE,EMPTY_STRING_IS_NULL';
|
||||||
|
SELECT @@sql_mode;
|
||||||
|
SELECT '' AS empty;
|
||||||
|
SET sql_mode='';
|
||||||
|
SELECT @@sql_mode;
|
||||||
|
SET sql_mode=DEFAULT;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.3 tests
|
||||||
|
--echo #
|
||||||
|
13
sql/item.cc
13
sql/item.cc
@@ -202,6 +202,19 @@ String *Item::val_str_ascii(String *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String *Item::val_str_ascii_revert_empty_string_is_null(THD *thd, String *str)
|
||||||
|
{
|
||||||
|
String *res= val_str_ascii(str);
|
||||||
|
if (!res && (thd->variables.sql_mode & MODE_EMPTY_STRING_IS_NULL))
|
||||||
|
{
|
||||||
|
null_value= false;
|
||||||
|
str->set("", 0, &my_charset_latin1);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
String *Item::val_str(String *str, String *converter, CHARSET_INFO *cs)
|
String *Item::val_str(String *str, String *converter, CHARSET_INFO *cs)
|
||||||
{
|
{
|
||||||
String *res= val_str(str);
|
String *res= val_str(str);
|
||||||
|
@@ -1172,6 +1172,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual String *val_str_ascii(String *str);
|
virtual String *val_str_ascii(String *str);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Returns the result of val_str_ascii(), translating NULLs back
|
||||||
|
to empty strings (if MODE_EMPTY_STRING_IS_NULL is set).
|
||||||
|
*/
|
||||||
|
String *val_str_ascii_revert_empty_string_is_null(THD *thd, String *str);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns the val_str() value converted to the given character set.
|
Returns the val_str() value converted to the given character set.
|
||||||
*/
|
*/
|
||||||
|
@@ -1354,7 +1354,8 @@ public:
|
|||||||
|
|
||||||
if (var->value->result_type() == STRING_RESULT)
|
if (var->value->result_type() == STRING_RESULT)
|
||||||
{
|
{
|
||||||
if (!(res=var->value->val_str_ascii(&str)))
|
if (!(res= var->value->val_str_ascii_revert_empty_string_is_null(thd,
|
||||||
|
&str)))
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user