summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-03-26 09:41:52 +0100
committerSergei Golubchik <sergii@pisem.net>2014-03-26 09:41:52 +0100
commitc73a0638c233f421bc17705d94e934d8fccfbe19 (patch)
tree473650aff8d7f0e9366ff4b15b3dffee41d6188c
parentd0c6a05eb5cc6b856a523725607defb229252885 (diff)
downloadmariadb-git-c73a0638c233f421bc17705d94e934d8fccfbe19.tar.gz
remove append_escaped(), use String::append_for_single_quote() instead
-rw-r--r--sql/sql_analyse.cc55
-rw-r--r--sql/sql_analyse.h2
-rw-r--r--sql/sql_partition.cc4
-rw-r--r--sql/sql_string.h9
-rw-r--r--storage/federated/ha_federated.cc6
-rw-r--r--storage/federatedx/ha_federatedx.cc6
-rw-r--r--storage/spider/spd_db_conn.cc8
-rw-r--r--storage/spider/spd_db_mysql.cc2
8 files changed, 22 insertions, 70 deletions
diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc
index ac3f7f25518..9b7ea58bee6 100644
--- a/sql/sql_analyse.cc
+++ b/sql/sql_analyse.cc
@@ -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;
-}
diff --git a/sql/sql_analyse.h b/sql/sql_analyse.h
index 8bac29de5a3..3d3662c3f4f 100644
--- a/sql/sql_analyse.h
+++ b/sql/sql_analyse.h
@@ -365,6 +365,4 @@ public:
List<Item> &field_list);
};
-bool append_escaped(String *to_str, String *from_str);
-
#endif /* SQL_ANALYSE_INCLUDED */
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index a9846df3b02..1ce952b9030 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -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, "'");
}
diff --git a/sql/sql_string.h b/sql/sql_string.h
index 65c5961a1d0..77712c09805 100644
--- a/sql/sql_string.h
+++ b/sql/sql_string.h
@@ -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);
diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc
index 45e51a022b5..4608aedd129 100644
--- a/storage/federated/ha_federated.cc
+++ b/storage/federated/ha_federated.cc
@@ -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()))
diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc
index 97cabd5f152..8d41ca2d1b3 100644
--- a/storage/federatedx/ha_federatedx.cc
+++ b/storage/federatedx/ha_federatedx.cc
@@ -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()))
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index 48c4b6ce4c6..459b450aacd 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -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);
diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc
index a09b9e4a804..d9c008086f1 100644
--- a/storage/spider/spd_db_mysql.cc
+++ b/storage/spider/spd_db_mysql.cc
@@ -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);
}