1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

A fix (bug #6564: QUOTE(NULL) returns NULL, not the string 'NULL')

This commit is contained in:
unknown
2004-11-11 18:20:40 +04:00
parent ce62fb28c0
commit baf1c89e3d
3 changed files with 21 additions and 4 deletions

View File

@ -167,6 +167,9 @@ length(quote(concat(char(0),"test")))
select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))); select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235))));
hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))) hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235))))
27E0E3E6E7E8EAEB27 27E0E3E6E7E8EAEB27
select concat('a', quote(NULL));
concat('a', quote(NULL))
aNULL
select reverse(""); select reverse("");
reverse("") reverse("")
@ -278,7 +281,7 @@ insert into t1 values ('one'),(NULL),('two'),('four');
select a, quote(a), isnull(quote(a)), quote(a) is null, ifnull(quote(a), 'n') from t1; select a, quote(a), isnull(quote(a)), quote(a) is null, ifnull(quote(a), 'n') from t1;
a quote(a) isnull(quote(a)) quote(a) is null ifnull(quote(a), 'n') a quote(a) isnull(quote(a)) quote(a) is null ifnull(quote(a), 'n')
one 'one' 0 0 'one' one 'one' 0 0 'one'
NULL NULL 1 1 n NULL NULL 0 0 NULL
two 'two' 0 0 'two' two 'two' 0 0 'two'
four 'four' 0 0 'four' four 'four' 0 0 'four'
drop table t1; drop table t1;

View File

@ -69,6 +69,12 @@ select quote(1/0), quote('\0\Z');
select length(quote(concat(char(0),"test"))); select length(quote(concat(char(0),"test")));
select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))); select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235))));
#
# Bug #6564: QUOTE(NULL
#
select concat('a', quote(NULL));
# #
# Wrong usage of functions # Wrong usage of functions
# #

View File

@ -2142,9 +2142,12 @@ String* Item_func_inet_ntoa::val_str(String* str)
This function is very useful when you want to generate SQL statements This function is very useful when you want to generate SQL statements
RETURN VALUES NOTE
QUOTE(NULL) returns the string 'NULL' (4 letters, without quotes).
RETURN VALUES
str Quoted string str Quoted string
NULL Argument to QUOTE() was NULL or out of memory. NULL Out of memory.
*/ */
#define get_esc_bit(mask, num) (1 & (*((mask) + ((num) >> 3))) >> ((num) & 7)) #define get_esc_bit(mask, num) (1 & (*((mask) + ((num) >> 3))) >> ((num) & 7))
@ -2168,7 +2171,12 @@ String *Item_func_quote::val_str(String *str)
String *arg= args[0]->val_str(str); String *arg= args[0]->val_str(str);
uint arg_length, new_length; uint arg_length, new_length;
if (!arg) // Null argument if (!arg) // Null argument
goto null; {
str->copy("NULL", 4); // Return the string 'NULL'
null_value= 0;
return str;
}
arg_length= arg->length(); arg_length= arg->length();
new_length= arg_length+2; /* for beginning and ending ' signs */ new_length= arg_length+2; /* for beginning and ending ' signs */