mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
QUOTE() code cleanup
mysql-test/r/func_str.result: cleanup sql/item_strfunc.cc: cleanup
This commit is contained in:
@ -148,7 +148,7 @@ decode(encode("abcdef","monty"),"monty")="abcdef"
|
|||||||
1
|
1
|
||||||
select quote('\'\"\\test');
|
select quote('\'\"\\test');
|
||||||
quote('\'\"\\test')
|
quote('\'\"\\test')
|
||||||
'\'\"\\test'
|
'\'"\\test'
|
||||||
select quote(concat('abc\'', '\\cba'));
|
select quote(concat('abc\'', '\\cba'));
|
||||||
quote(concat('abc\'', '\\cba'))
|
quote(concat('abc\'', '\\cba'))
|
||||||
'abc\'\\cba'
|
'abc\'\\cba'
|
||||||
|
@ -2071,13 +2071,15 @@ String* Item_func_inet_ntoa::val_str(String* str)
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define get_esc_bit(mask, num) (1 & (*((mask) + ((num) >> 3))) >> ((num) & 7))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
QUOTE() function returns argument string in single quotes,
|
QUOTE() function returns argument string in single quotes,
|
||||||
also adds a \ before \, ' CHAR(0) and CHAR(24)
|
also adds a \ before \, ' CHAR(0) and CHAR(24)
|
||||||
*/
|
*/
|
||||||
String *Item_func_quote::val_str(String *str)
|
String *Item_func_quote::val_str(String *str)
|
||||||
{
|
{
|
||||||
static char escmask[64] = {0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00,
|
static char escmask[32] = {0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
@ -2089,10 +2091,8 @@ String *Item_func_quote::val_str(String *str)
|
|||||||
goto null;
|
goto null;
|
||||||
|
|
||||||
for (from= (char*) arg->ptr(), end= from + arg->length(); from < end; from++)
|
for (from= (char*) arg->ptr(), end= from + arg->length(); from < end; from++)
|
||||||
{
|
delta+= get_esc_bit(escmask, *from);
|
||||||
if (*(escmask + (*from >> 3)) and (1 << (*from & 7)))
|
|
||||||
delta++;
|
|
||||||
}
|
|
||||||
if (str->alloc(arg->length() + delta))
|
if (str->alloc(arg->length() + delta))
|
||||||
goto null;
|
goto null;
|
||||||
to= (char*) str->ptr() + arg->length() + delta - 1;
|
to= (char*) str->ptr() + arg->length() + delta - 1;
|
||||||
@ -2101,7 +2101,7 @@ String *Item_func_quote::val_str(String *str)
|
|||||||
from--, to--)
|
from--, to--)
|
||||||
{
|
{
|
||||||
*to= *from;
|
*to= *from;
|
||||||
if (*(escmask + (*from >> 3)) and (1 << (*from & 7)))
|
if (get_esc_bit(escmask, *from))
|
||||||
*--to= '\\';
|
*--to= '\\';
|
||||||
}
|
}
|
||||||
*to= '\'';
|
*to= '\'';
|
||||||
|
Reference in New Issue
Block a user