mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 17:33:44 +01:00
remove append_escaped(), use String::append_for_single_quote() instead
This commit is contained in:
parent
d0c6a05eb5
commit
c73a0638c2
8 changed files with 22 additions and 70 deletions
sql
storage
|
@ -1080,7 +1080,7 @@ int collect_string(String *element,
|
|||
else
|
||||
info->found = 1;
|
||||
info->str->append('\'');
|
||||
if (append_escaped(info->str, element))
|
||||
if (info->str->append_for_single_quote(element))
|
||||
return 1;
|
||||
info->str->append('\'');
|
||||
return 0;
|
||||
|
@ -1239,56 +1239,3 @@ uint check_ulonglong(const char *str, uint length)
|
|||
return ((uchar) str[-1] <= (uchar) cmp[-1]) ? smaller : bigger;
|
||||
} /* check_ulonlong */
|
||||
|
||||
|
||||
/*
|
||||
Quote special characters in a string.
|
||||
|
||||
SYNOPSIS
|
||||
append_escaped(to_str, from_str)
|
||||
to_str (in) A pointer to a String.
|
||||
from_str (to) A pointer to an allocated string
|
||||
|
||||
DESCRIPTION
|
||||
append_escaped() takes a String type variable, where it appends
|
||||
escaped the second argument. Only characters that require escaping
|
||||
will be escaped.
|
||||
|
||||
RETURN VALUES
|
||||
0 Success
|
||||
1 Out of memory
|
||||
*/
|
||||
|
||||
bool append_escaped(String *to_str, String *from_str)
|
||||
{
|
||||
char *from, *end, c;
|
||||
|
||||
if (to_str->realloc(to_str->length() + from_str->length()))
|
||||
return 1;
|
||||
|
||||
from= (char*) from_str->ptr();
|
||||
end= from + from_str->length();
|
||||
for (; from < end; from++)
|
||||
{
|
||||
c= *from;
|
||||
switch (c) {
|
||||
case '\0':
|
||||
c= '0';
|
||||
break;
|
||||
case '\032':
|
||||
c= 'Z';
|
||||
break;
|
||||
case '\\':
|
||||
case '\'':
|
||||
break;
|
||||
default:
|
||||
goto normal_character;
|
||||
}
|
||||
if (to_str->append('\\'))
|
||||
return 1;
|
||||
|
||||
normal_character:
|
||||
if (to_str->append(c))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -365,6 +365,4 @@ public:
|
|||
List<Item> &field_list);
|
||||
};
|
||||
|
||||
bool append_escaped(String *to_str, String *from_str);
|
||||
|
||||
#endif /* SQL_ANALYSE_INCLUDED */
|
||||
|
|
|
@ -67,7 +67,6 @@
|
|||
// table_to_filename
|
||||
// mysql_*_alter_copy_data
|
||||
#include "opt_range.h" // store_key_image_to_rec
|
||||
#include "sql_analyse.h" // append_escaped
|
||||
#include "sql_alter.h" // Alter_table_ctx
|
||||
|
||||
#include <algorithm>
|
||||
|
@ -1935,10 +1934,9 @@ static int add_uint(File fptr, ulonglong number)
|
|||
*/
|
||||
static int add_quoted_string(File fptr, const char *quotestr)
|
||||
{
|
||||
String orgstr(quotestr, system_charset_info);
|
||||
String escapedstr;
|
||||
int err= add_string(fptr, "'");
|
||||
err+= append_escaped(&escapedstr, &orgstr);
|
||||
err+= escapedstr.append_for_single_quote(quotestr);
|
||||
err+= add_string(fptr, escapedstr.c_ptr_safe());
|
||||
return err + add_string(fptr, "'");
|
||||
}
|
||||
|
|
|
@ -496,7 +496,16 @@ public:
|
|||
return FALSE;
|
||||
}
|
||||
void print(String *print);
|
||||
|
||||
bool append_for_single_quote(const char *st, uint len);
|
||||
bool append_for_single_quote(const String *s)
|
||||
{
|
||||
return append_for_single_quote(s->ptr(), s->length());
|
||||
}
|
||||
bool append_for_single_quote(const char *st)
|
||||
{
|
||||
return append_for_single_quote(st, strlen(st));
|
||||
}
|
||||
|
||||
/* Swap two string objects. Efficient way to exchange data without memcpy. */
|
||||
void swap(String &s);
|
||||
|
|
|
@ -1004,7 +1004,7 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
|
|||
uint blob_length= uint2korr(ptr);
|
||||
blob.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
|
||||
blob_length, &my_charset_bin);
|
||||
if (append_escaped(to, &blob))
|
||||
if (to->append_for_single_quote(&blob))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else if (part->key_part_flag & HA_VAR_LENGTH_PART)
|
||||
|
@ -1013,7 +1013,7 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
|
|||
uint var_length= uint2korr(ptr);
|
||||
varchar.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
|
||||
var_length, &my_charset_bin);
|
||||
if (append_escaped(to, &varchar))
|
||||
if (to->append_for_single_quote(&varchar))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else
|
||||
|
@ -1025,7 +1025,7 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
|
|||
|
||||
if (field->result_type() == STRING_RESULT)
|
||||
{
|
||||
if (append_escaped(to, res))
|
||||
if (to->append_for_single_quote(res))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else if (to->append(res->ptr(), res->length()))
|
||||
|
|
|
@ -925,7 +925,7 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
|
|||
uint blob_length= uint2korr(ptr);
|
||||
blob.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
|
||||
blob_length, &my_charset_bin);
|
||||
if (append_escaped(to, &blob))
|
||||
if (to->append_for_single_quote(&blob))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else if (part->key_part_flag & HA_VAR_LENGTH_PART)
|
||||
|
@ -934,7 +934,7 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
|
|||
uint var_length= uint2korr(ptr);
|
||||
varchar.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
|
||||
var_length, &my_charset_bin);
|
||||
if (append_escaped(to, &varchar))
|
||||
if (to->append_for_single_quote(&varchar))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else
|
||||
|
@ -946,7 +946,7 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
|
|||
|
||||
if (field->result_type() == STRING_RESULT)
|
||||
{
|
||||
if (append_escaped(to, res))
|
||||
if (to->append_for_single_quote(res))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else if (to->append(res->ptr(), res->length()))
|
||||
|
|
|
@ -7909,7 +7909,7 @@ int spider_db_open_item_string(
|
|||
tmp_str.mem_calc();
|
||||
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
|
||||
if (
|
||||
append_escaped(str->get_str(), tmp_str2) ||
|
||||
str->get_str()->append_for_single_quote(tmp_str2) ||
|
||||
str->reserve(SPIDER_SQL_VALUE_QUOTE_LEN)
|
||||
)
|
||||
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
||||
|
@ -9029,7 +9029,7 @@ int spider_db_udf_ping_table_append_mon_next(
|
|||
str->q_append(SPIDER_SQL_SELECT_STR, SPIDER_SQL_SELECT_LEN);
|
||||
str->q_append(SPIDER_SQL_PING_TABLE_STR, SPIDER_SQL_PING_TABLE_LEN);
|
||||
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
|
||||
append_escaped(str->get_str(), child_table_name_str.get_str());
|
||||
str->get_str()->append_for_single_quote(child_table_name_str.get_str());
|
||||
str->mem_calc();
|
||||
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
|
||||
str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
|
||||
|
@ -9040,7 +9040,7 @@ int spider_db_udf_ping_table_append_mon_next(
|
|||
str->q_append(limit_str, limit_str_length);
|
||||
str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
|
||||
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
|
||||
append_escaped(str->get_str(), where_clause_str.get_str());
|
||||
str->get_str()->append_for_single_quote(where_clause_str.get_str());
|
||||
str->mem_calc();
|
||||
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
|
||||
str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
|
||||
|
@ -9093,7 +9093,7 @@ int spider_db_udf_ping_table_append_select(
|
|||
))
|
||||
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
||||
if (use_where)
|
||||
append_escaped(str->get_str(), where_str->get_str());
|
||||
str->get_str()->append_for_single_quote(where_str->get_str());
|
||||
str->mem_calc();
|
||||
str->q_append(SPIDER_SQL_LIMIT_STR, SPIDER_SQL_LIMIT_LEN);
|
||||
str->q_append(limit_str, limit_str_length);
|
||||
|
|
|
@ -3717,7 +3717,7 @@ int spider_db_mysql_util::append_escaped_util(
|
|||
) {
|
||||
DBUG_ENTER("spider_db_mysql_util::append_escaped_util");
|
||||
DBUG_PRINT("info",("spider this=%p", this));
|
||||
append_escaped(to->get_str(), from);
|
||||
to->get_str()->append_for_single_quote(from);
|
||||
to->mem_calc();
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue