diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-03-26 09:41:52 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-03-26 09:41:52 +0100 |
commit | c73a0638c233f421bc17705d94e934d8fccfbe19 (patch) | |
tree | 473650aff8d7f0e9366ff4b15b3dffee41d6188c | |
parent | d0c6a05eb5cc6b856a523725607defb229252885 (diff) | |
download | mariadb-git-c73a0638c233f421bc17705d94e934d8fccfbe19.tar.gz |
remove append_escaped(), use String::append_for_single_quote() instead
-rw-r--r-- | sql/sql_analyse.cc | 55 | ||||
-rw-r--r-- | sql/sql_analyse.h | 2 | ||||
-rw-r--r-- | sql/sql_partition.cc | 4 | ||||
-rw-r--r-- | sql/sql_string.h | 9 | ||||
-rw-r--r-- | storage/federated/ha_federated.cc | 6 | ||||
-rw-r--r-- | storage/federatedx/ha_federatedx.cc | 6 | ||||
-rw-r--r-- | storage/spider/spd_db_conn.cc | 8 | ||||
-rw-r--r-- | storage/spider/spd_db_mysql.cc | 2 |
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);
}
|