summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
Diffstat (limited to 'storage')
-rw-r--r--storage/connect/ha_connect.cc74
-rw-r--r--storage/federated/ha_federated.cc29
-rw-r--r--storage/federatedx/ha_federatedx.cc60
-rw-r--r--storage/federatedx/ha_federatedx.h2
-rw-r--r--storage/maria/ha_maria.cc30
-rw-r--r--storage/myisam/ha_myisam.cc28
-rw-r--r--storage/myisammrg/ha_myisammrg.cc4
-rw-r--r--storage/oqgraph/ha_oqgraph.cc14
-rw-r--r--storage/rocksdb/ha_rocksdb.cc18
-rw-r--r--storage/rocksdb/rdb_datadic.cc8
-rw-r--r--storage/sphinx/ha_sphinx.cc41
-rw-r--r--storage/spider/hs_client/config.hpp2
-rw-r--r--storage/spider/hs_client/hstcpcli.cpp6
-rw-r--r--storage/spider/hs_client/socket.cpp3
-rw-r--r--storage/spider/spd_db_conn.cc16
-rw-r--r--storage/spider/spd_db_handlersocket.cc94
-rw-r--r--storage/spider/spd_db_mysql.cc102
-rw-r--r--storage/spider/spd_db_oracle.cc102
-rw-r--r--storage/spider/spd_malloc.cc13
19 files changed, 370 insertions, 276 deletions
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index 1474af92933..e263d7eeb55 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -2586,11 +2586,9 @@ bool ha_connect::MakeKeyWhere(PGLOBAL g, PSTRG qry, OPVAL vop, char q,
qry->Append('\'');
if (kpart->key_part_flag & HA_VAR_LENGTH_PART) {
- String varchar;
- uint var_length= uint2korr(ptr);
-
- varchar.set_quick((char*)ptr + HA_KEY_BLOB_LENGTH,
- var_length, &my_charset_bin);
+ uint var_length= uint2korr(ptr);
+ String varchar((char*) ptr + HA_KEY_BLOB_LENGTH,
+ var_length, &my_charset_bin);
qry->Append(varchar.ptr(), varchar.length(), nq);
} else {
char strbuff[MAX_FIELD_WIDTH];
@@ -3484,7 +3482,7 @@ bool ha_connect::get_error_message(int error, String* buf)
strlen(g->Message),
&my_charset_latin1).lex_cstring());
} else
- buf->append(STRING_WITH_LEN("Cannot retrieve error message"));
+ buf->append(STRING_WITH_LEN("Cannot retrieve error message"));
DBUG_RETURN(false);
} // end of get_error_message
@@ -5422,10 +5420,10 @@ static bool add_field(String* sql, TABTYPE ttp, const char* field_name, int typ,
bool q, error = false;
const char* type = PLGtoMYSQLtype(typ, dbf, var);
- error |= sql->append('`');
- error |= sql->append(field_name);
- error |= sql->append("` ");
- error |= sql->append(type);
+ error|= sql->append('`');
+ error|= sql->append(field_name, strlen(field_name));
+ error|= sql->append(STRING_WITH_LEN("` "));
+ error|= sql->append(type, strlen(type));
if (typ == TYPE_STRING ||
(len && typ != TYPE_DATE && (typ != TYPE_DOUBLE || dec >= 0))) {
@@ -5446,20 +5444,20 @@ static bool add_field(String* sql, TABTYPE ttp, const char* field_name, int typ,
} // endif len
if (v == 'U')
- error |= sql->append(" UNSIGNED");
+ error |= sql->append(STRING_WITH_LEN(" UNSIGNED"));
else if (v == 'Z')
- error |= sql->append(" ZEROFILL");
+ error |= sql->append(STRING_WITH_LEN(" ZEROFILL"));
if (key && *key) {
- error |= sql->append(" ");
- error |= sql->append(key);
+ error |= sql->append(' ');
+ error |= sql->append(key, strlen(key));
} // endif key
if (tm)
error |= sql->append(STRING_WITH_LEN(" NOT NULL"), system_charset_info);
if (dft && *dft) {
- error |= sql->append(" DEFAULT ");
+ error |= sql->append(STRING_WITH_LEN(" DEFAULT "));
if (typ == TYPE_DATE)
q = (strspn(dft, "0123456789 -:/") == strlen(dft));
@@ -5467,41 +5465,41 @@ static bool add_field(String* sql, TABTYPE ttp, const char* field_name, int typ,
q = !IsTypeNum(typ);
if (q) {
- error |= sql->append("'");
+ error |= sql->append(STRING_WITH_LEN("'"));
error |= sql->append_for_single_quote(dft, strlen(dft));
- error |= sql->append("'");
+ error |= sql->append('\'');
} else
- error |= sql->append(dft);
+ error |= sql->append(dft, strlen(dft));
} // endif dft
if (xtra && *xtra) {
- error |= sql->append(" ");
- error |= sql->append(xtra);
+ error |= sql->append(' ');
+ error |= sql->append(xtra, strlen(xtra));
} // endif rem
if (rem && *rem) {
- error |= sql->append(" COMMENT '");
+ error |= sql->append(STRING_WITH_LEN(" COMMENT '"));
error |= sql->append_for_single_quote(rem, strlen(rem));
- error |= sql->append("'");
+ error |= sql->append(STRING_WITH_LEN("'"));
} // endif rem
if (fmt && *fmt) {
switch (ttp) {
- case TAB_JSON: error |= sql->append(" JPATH='"); break;
+ case TAB_JSON: error |= sql->append(STRING_WITH_LEN(" JPATH='")); break;
#if defined(BSON_SUPPORT)
- case TAB_BSON: error |= sql->append(" JPATH='"); break;
+ case TAB_BSON: error |= sql->append(STRING_WITH_LEN(" JPATH='")); break;
#endif // BSON_SUPPORT
- case TAB_XML: error |= sql->append(" XPATH='"); break;
- default: error |= sql->append(" FIELD_FORMAT='");
+ case TAB_XML: error |= sql->append(STRING_WITH_LEN(" XPATH='")); break;
+ default: error |= sql->append(STRING_WITH_LEN(" FIELD_FORMAT='"));
} // endswitch ttp
error |= sql->append_for_single_quote(fmt, strlen(fmt));
- error |= sql->append("'");
+ error |= sql->append('\'');
} // endif flag
if (flag) {
- error |= sql->append(" FLAG=");
+ error |= sql->append(STRING_WITH_LEN(" FLAG="));
error |= sql->append_ulonglong(flag);
} // endif flag
@@ -5537,7 +5535,7 @@ static int init_table_share(THD* thd,
if (vull != opt->def_value) {
oom|= sql->append(' ');
- oom|= sql->append(opt->name);
+ oom|= sql->append(opt->name, strlen(opt->name));
oom|= sql->append('=');
oom|= sql->append_ulonglong(vull);
} // endif vull
@@ -5548,8 +5546,8 @@ static int init_table_share(THD* thd,
if (vstr) {
oom|= sql->append(' ');
- oom|= sql->append(opt->name);
- oom|= sql->append("='");
+ oom|= sql->append(opt->name, strlen(opt->name));
+ oom|= sql->append(STRING_WITH_LEN("='"));
oom|= sql->append_for_single_quote(vstr, strlen(vstr));
oom|= sql->append('\'');
} // endif vstr
@@ -5560,9 +5558,12 @@ static int init_table_share(THD* thd,
if (vull != opt->def_value) {
oom|= sql->append(' ');
- oom|= sql->append(opt->name);
+ oom|= sql->append(opt->name, strlen(opt->name));
oom|= sql->append('=');
- oom|= sql->append(vull ? "YES" : "NO");
+ if (vull)
+ oom|= sql->append("YES", 3);
+ else
+ oom|= sql->append("NO", 2);
} // endif vull
break;
@@ -5577,7 +5578,7 @@ static int init_table_share(THD* thd,
if (create_info->connect_string.length) {
oom|= sql->append(' ');
- oom|= sql->append("CONNECTION='");
+ oom|= sql->append(STRING_WITH_LEN("CONNECTION='"));
oom|= sql->append_for_single_quote(create_info->connect_string.str,
create_info->connect_string.length);
oom|= sql->append('\'');
@@ -5589,8 +5590,9 @@ static int init_table_share(THD* thd,
if (create_info->default_table_charset) {
oom|= sql->append(' ');
- oom|= sql->append("CHARSET=");
- oom|= sql->append(create_info->default_table_charset->csname);
+ oom|= sql->append(STRING_WITH_LEN("CHARSET="));
+ oom|= sql->append(create_info->default_table_charset->csname,
+ strlen(create_info->default_table_charset->csname));
if (oom)
return HA_ERR_OUT_OF_MEM;
diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc
index 64a80808d6f..88222f79df8 100644
--- a/storage/federated/ha_federated.cc
+++ b/storage/federated/ha_federated.cc
@@ -1000,19 +1000,17 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
}
else if (part->key_part_flag & HA_BLOB_PART)
{
- String blob;
uint blob_length= uint2korr(ptr);
- blob.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
- blob_length, &my_charset_bin);
+ String blob((char*) ptr+HA_KEY_BLOB_LENGTH,
+ blob_length, &my_charset_bin);
if (to->append_for_single_quote(&blob))
DBUG_RETURN(1);
}
else if (part->key_part_flag & HA_VAR_LENGTH_PART)
{
- String varchar;
uint var_length= uint2korr(ptr);
- varchar.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
- var_length, &my_charset_bin);
+ String varchar((char*) ptr+HA_KEY_BLOB_LENGTH,
+ var_length, &my_charset_bin);
if (to->append_for_single_quote(&varchar))
DBUG_RETURN(1);
}
@@ -1392,7 +1390,7 @@ bool ha_federated::create_where_from_key(String *to,
case HA_READ_AFTER_KEY:
if (eq_range_arg)
{
- if (tmp.append("1=1")) // Dummy
+ if (tmp.append(STRING_WITH_LEN("1=1"))) // Dummy
goto err;
break;
}
@@ -2428,7 +2426,7 @@ int ha_federated::index_read_idx_with_result_set(uchar *buf, uint index,
index_string.length(0);
sql_query.length(0);
- sql_query.append(share->select_query);
+ sql_query.append(share->select_query, strlen(share->select_query));
range.key= key;
range.length= key_len;
@@ -2512,7 +2510,7 @@ int ha_federated::read_range_first(const key_range *start_key,
DBUG_ASSERT(!(start_key == NULL && end_key == NULL));
sql_query.length(0);
- sql_query.append(share->select_query);
+ sql_query.append(share->select_query, strlen(share->select_query));
create_where_from_key(&sql_query,
&table->key_info[active_index],
start_key, end_key, 0, eq_range_arg);
@@ -3168,16 +3166,17 @@ int ha_federated::real_connect()
We have established a connection, lets try a simple dummy query just
to check that the table and expected columns are present.
*/
- sql_query.append(share->select_query);
+ sql_query.append(share->select_query, strlen(share->select_query));
sql_query.append(STRING_WITH_LEN(" WHERE 1=0"));
if (mysql_real_query(mysql, sql_query.ptr(), sql_query.length()))
{
sql_query.length(0);
- sql_query.append("error: ");
+ sql_query.append(STRING_WITH_LEN("error: "));
sql_query.qs_append(mysql_errno(mysql));
- sql_query.append(" '");
- sql_query.append(mysql_error(mysql));
- sql_query.append("'");
+ sql_query.append(STRING_WITH_LEN(" '"));
+ const char *errmsg= mysql_error(mysql);
+ sql_query.append(errmsg, strlen(errmsg));
+ sql_query.append('\'');
mysql_close(mysql);
mysql= NULL;
my_error(ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST, MYF(0), sql_query.ptr());
@@ -3242,7 +3241,7 @@ bool ha_federated::get_error_message(int error, String* buf)
buf->append(STRING_WITH_LEN("Error on remote system: "));
buf->qs_append(remote_error_number);
buf->append(STRING_WITH_LEN(": "));
- buf->append(remote_error_buf);
+ buf->append(remote_error_buf, strlen(remote_error_buf));
remote_error_number= 0;
remote_error_buf[0]= '\0';
diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc
index 6d9bcc1b7c9..75856a76c3a 100644
--- a/storage/federatedx/ha_federatedx.cc
+++ b/storage/federatedx/ha_federatedx.cc
@@ -937,19 +937,17 @@ static bool emit_key_part_element(String *to, KEY_PART_INFO *part,
}
else if (part->key_part_flag & HA_BLOB_PART)
{
- String blob;
uint blob_length= uint2korr(ptr);
- blob.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
- blob_length, &my_charset_bin);
+ String blob((char*) ptr+HA_KEY_BLOB_LENGTH,
+ blob_length, &my_charset_bin);
if (to->append_for_single_quote(&blob))
DBUG_RETURN(1);
}
else if (part->key_part_flag & HA_VAR_LENGTH_PART)
{
- String varchar;
uint var_length= uint2korr(ptr);
- varchar.set_quick((char*) ptr+HA_KEY_BLOB_LENGTH,
- var_length, &my_charset_bin);
+ String varchar((char*) ptr+HA_KEY_BLOB_LENGTH,
+ var_length, &my_charset_bin);
if (to->append_for_single_quote(&varchar))
DBUG_RETURN(1);
}
@@ -1271,14 +1269,18 @@ bool ha_federatedx::create_where_from_key(String *to,
{
if (*ptr++)
{
+ LEX_CSTRING constraint;
+ if (ranges[i]->flag == HA_READ_KEY_EXACT)
+ constraint= {STRING_WITH_LEN(" IS NULL ") };
+ else
+ constraint= {STRING_WITH_LEN(" IS NOT NULL ") };
/*
We got "IS [NOT] NULL" condition against nullable column. We
distinguish between "IS NOT NULL" and "IS NULL" by flag. For
"IS NULL", flag is set to HA_READ_KEY_EXACT.
*/
if (emit_key_part_name(&tmp, key_part) ||
- tmp.append(ranges[i]->flag == HA_READ_KEY_EXACT ?
- " IS NULL " : " IS NOT NULL "))
+ tmp.append(constraint))
goto err;
/*
We need to adjust pointer and length to be prepared for next
@@ -1330,7 +1332,7 @@ bool ha_federatedx::create_where_from_key(String *to,
case HA_READ_AFTER_KEY:
if (eq_range)
{
- if (tmp.append("1=1")) // Dummy
+ if (tmp.append(STRING_WITH_LEN("1=1"))) // Dummy
goto err;
break;
}
@@ -1439,13 +1441,16 @@ static void fill_server(MEM_ROOT *mem_root, FEDERATEDX_SERVER *server,
FEDERATEDX_SHARE *share, CHARSET_INFO *table_charset)
{
char buffer[STRING_BUFFER_USUAL_SIZE];
+ const char *socket_arg= share->socket ? share->socket : "";
+ const char *password_arg= share->password ? share->password : "";
+
String key(buffer, sizeof(buffer), &my_charset_bin);
- String scheme(share->scheme, &my_charset_latin1);
- String hostname(share->hostname, &my_charset_latin1);
- String database(share->database, system_charset_info);
- String username(share->username, system_charset_info);
- String socket(share->socket ? share->socket : "", files_charset_info);
- String password(share->password ? share->password : "", &my_charset_bin);
+ String scheme(share->scheme, strlen(share->scheme), &my_charset_latin1);
+ String hostname(share->hostname, strlen(share->hostname), &my_charset_latin1);
+ String database(share->database, strlen(share->database), system_charset_info);
+ String username(share->username, strlen(share->username), system_charset_info);
+ String socket(socket_arg, strlen(socket_arg), files_charset_info);
+ String password(password_arg, strlen(password_arg), &my_charset_bin);
DBUG_ENTER("fill_server");
/* Do some case conversions */
@@ -1529,13 +1534,16 @@ static FEDERATEDX_SERVER *get_server(FEDERATEDX_SHARE *share, TABLE *table)
FEDERATEDX_SERVER *server= NULL, tmp_server;
MEM_ROOT mem_root;
char buffer[STRING_BUFFER_USUAL_SIZE];
+ const char *socket_arg= share->socket ? share->socket : "";
+ const char *password_arg= share->password ? share->password : "";
+
String key(buffer, sizeof(buffer), &my_charset_bin);
- String scheme(share->scheme, &my_charset_latin1);
- String hostname(share->hostname, &my_charset_latin1);
- String database(share->database, system_charset_info);
- String username(share->username, system_charset_info);
- String socket(share->socket ? share->socket : "", files_charset_info);
- String password(share->password ? share->password : "", &my_charset_bin);
+ String scheme(share->scheme, strlen(share->scheme), &my_charset_latin1);
+ String hostname(share->hostname, strlen(share->hostname), &my_charset_latin1);
+ String database(share->database, strlen(share->database), system_charset_info);
+ String username(share->username, strlen(share->username), system_charset_info);
+ String socket(socket_arg, strlen(socket_arg), files_charset_info);
+ String password(password_arg, strlen(password_arg), &my_charset_bin);
DBUG_ENTER("ha_federated.cc::get_server");
mysql_mutex_assert_owner(&federatedx_mutex);
@@ -1637,13 +1645,14 @@ static FEDERATEDX_SHARE *get_share(const char *table_name, TABLE *table)
if (!(share= (FEDERATEDX_SHARE *) memdup_root(&mem_root, (char*)&tmp_share, sizeof(*share))) ||
!(share->share_key= (char*) memdup_root(&mem_root, tmp_share.share_key, tmp_share.share_key_length+1)) ||
- !(share->select_query= (char*) strmake_root(&mem_root, query.ptr(), query.length())))
+ !(share->select_query.str= (char*) strmake_root(&mem_root, query.ptr(), query.length())))
goto error;
+ share->select_query.length= query.length();
share->mem_root= mem_root;
DBUG_PRINT("info",
- ("share->select_query %s", share->select_query));
+ ("share->select_query %s", share->select_query.str));
if (!(share->s= get_server(share, table)))
goto error;
@@ -2822,8 +2831,7 @@ int ha_federatedx::rnd_init(bool scan)
if (stored_result)
(void) free_result();
- if (io->query(share->select_query,
- strlen(share->select_query)))
+ if (io->query(share->select_query.str, share->select_query.length))
goto error;
stored_result= io->store_result();
@@ -3476,7 +3484,7 @@ bool ha_federatedx::get_error_message(int error, String* buf)
buf->append(STRING_WITH_LEN("Error on remote system: "));
buf->qs_append(remote_error_number);
buf->append(STRING_WITH_LEN(": "));
- buf->append(remote_error_buf);
+ buf->append(remote_error_buf, strlen(remote_error_buf));
/* Ensure string ends with \0 */
(void) buf->c_ptr_safe();
diff --git a/storage/federatedx/ha_federatedx.h b/storage/federatedx/ha_federatedx.h
index 473d3ecd3e2..38eae265edf 100644
--- a/storage/federatedx/ha_federatedx.h
+++ b/storage/federatedx/ha_federatedx.h
@@ -104,7 +104,7 @@ typedef struct st_federatedx_share {
/*
the primary select query to be used in rnd_init
*/
- char *select_query;
+ LEX_CSTRING select_query;
/*
remote host info, parse_url supplies
*/
diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc
index 79d32886659..84c81d9f7b3 100644
--- a/storage/maria/ha_maria.cc
+++ b/storage/maria/ha_maria.cc
@@ -390,9 +390,9 @@ static void init_aria_psi_keys(void)
#define init_aria_psi_keys() /* no-op */
#endif /* HAVE_PSI_INTERFACE */
-const char *MA_CHECK_INFO= "info";
-const char *MA_CHECK_WARNING= "warning";
-const char *MA_CHECK_ERROR= "error";
+const LEX_CSTRING MA_CHECK_INFO= { STRING_WITH_LEN("info") };
+const LEX_CSTRING MA_CHECK_WARNING= { STRING_WITH_LEN("warning") };
+const LEX_CSTRING MA_CHECK_ERROR= { STRING_WITH_LEN("error") };
/*****************************************************************************
** MARIA tables
@@ -406,13 +406,13 @@ static handler *maria_create_handler(handlerton *hton,
}
-static void _ma_check_print(HA_CHECK *param, const char* msg_type,
+static void _ma_check_print(HA_CHECK *param, const LEX_CSTRING *msg_type,
const char *msgbuf)
{
- if (msg_type == MA_CHECK_INFO)
+ if (msg_type == &MA_CHECK_INFO)
sql_print_information("%s.%s: %s", param->db_name, param->table_name,
msgbuf);
- else if (msg_type == MA_CHECK_WARNING)
+ else if (msg_type == &MA_CHECK_WARNING)
sql_print_warning("%s.%s: %s", param->db_name, param->table_name,
msgbuf);
else
@@ -422,7 +422,7 @@ static void _ma_check_print(HA_CHECK *param, const char* msg_type,
// collect errors printed by maria_check routines
-static void _ma_check_print_msg(HA_CHECK *param, const char *msg_type,
+static void _ma_check_print_msg(HA_CHECK *param, const LEX_CSTRING *msg_type,
const char *fmt, va_list args)
{
THD *thd= (THD *) param->thd;
@@ -437,7 +437,7 @@ static void _ma_check_print_msg(HA_CHECK *param, const char *msg_type,
msg_length= my_vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);
msgbuf[sizeof(msgbuf) - 1]= 0; // healthy paranoia
- DBUG_PRINT(msg_type, ("message: %s", msgbuf));
+ DBUG_PRINT(msg_type->str, ("message: %s", msgbuf));
if (!thd->vio_ok())
{
@@ -449,9 +449,9 @@ static void _ma_check_print_msg(HA_CHECK *param, const char *msg_type,
(T_CREATE_MISSING_KEYS | T_SAFE_REPAIR | T_AUTO_REPAIR))
{
myf flag= 0;
- if (msg_type == MA_CHECK_INFO)
+ if (msg_type == &MA_CHECK_INFO)
flag= ME_NOTE;
- else if (msg_type == MA_CHECK_WARNING)
+ else if (msg_type == &MA_CHECK_WARNING)
flag= ME_WARNING;
my_message(ER_NOT_KEYFILE, msgbuf, MYF(flag));
if (thd->variables.log_warnings > 2)
@@ -470,9 +470,9 @@ static void _ma_check_print_msg(HA_CHECK *param, const char *msg_type,
*/
protocol->prepare_for_resend();
protocol->store(name, (uint)length, system_charset_info);
- protocol->store(param->op_name, system_charset_info);
+ protocol->store(param->op_name, strlen(param->op_name), system_charset_info);
protocol->store(msg_type, system_charset_info);
- protocol->store(msgbuf, (uint)msg_length, system_charset_info);
+ protocol->store(msgbuf, msg_length, system_charset_info);
if (protocol->write())
sql_print_error("Failed on my_net_write, writing to stderr instead: %s.%s: %s\n",
param->db_name, param->table_name, msgbuf);
@@ -910,7 +910,7 @@ void _ma_check_print_error(HA_CHECK *param, const char *fmt, ...)
if (param->testflag & T_SUPPRESS_ERR_HANDLING)
DBUG_VOID_RETURN;
va_start(args, fmt);
- _ma_check_print_msg(param, MA_CHECK_ERROR, fmt, args);
+ _ma_check_print_msg(param, &MA_CHECK_ERROR, fmt, args);
va_end(args);
DBUG_VOID_RETURN;
}
@@ -921,7 +921,7 @@ void _ma_check_print_info(HA_CHECK *param, const char *fmt, ...)
va_list args;
DBUG_ENTER("_ma_check_print_info");
va_start(args, fmt);
- _ma_check_print_msg(param, MA_CHECK_INFO, fmt, args);
+ _ma_check_print_msg(param, &MA_CHECK_INFO, fmt, args);
va_end(args);
DBUG_VOID_RETURN;
}
@@ -934,7 +934,7 @@ void _ma_check_print_warning(HA_CHECK *param, const char *fmt, ...)
param->warning_printed++;
param->out_flag |= O_DATA_LOST;
va_start(args, fmt);
- _ma_check_print_msg(param, MA_CHECK_WARNING, fmt, args);
+ _ma_check_print_msg(param, &MA_CHECK_WARNING, fmt, args);
va_end(args);
DBUG_VOID_RETURN;
}
diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc
index 23a0adcaf2a..2a49971f6db 100644
--- a/storage/myisam/ha_myisam.cc
+++ b/storage/myisam/ha_myisam.cc
@@ -96,9 +96,9 @@ static MYSQL_THDVAR_ENUM(stats_method, PLUGIN_VAR_RQCMDARG,
"and NULLS_IGNORED", NULL, NULL,
MI_STATS_METHOD_NULLS_NOT_EQUAL, &myisam_stats_method_typelib);
-const char *MI_CHECK_INFO= "info";
-const char *MI_CHECK_WARNING= "warning";
-const char *MI_CHECK_ERROR= "error";
+const LEX_CSTRING MI_CHECK_INFO= { STRING_WITH_LEN("info") };
+const LEX_CSTRING MI_CHECK_WARNING= { STRING_WITH_LEN("warning") };
+const LEX_CSTRING MI_CHECK_ERROR= { STRING_WITH_LEN("error") };
#ifndef DBUG_OFF
/**
@@ -135,13 +135,13 @@ static handler *myisam_create_handler(handlerton *hton,
}
-static void mi_check_print(HA_CHECK *param, const char* msg_type,
+static void mi_check_print(HA_CHECK *param, const LEX_CSTRING* msg_type,
const char *msgbuf)
{
- if (msg_type == MI_CHECK_INFO)
+ if (msg_type == &MI_CHECK_INFO)
sql_print_information("%s.%s: %s", param->db_name, param->table_name,
msgbuf);
- else if (msg_type == MI_CHECK_WARNING)
+ else if (msg_type == &MI_CHECK_WARNING)
sql_print_warning("%s.%s: %s", param->db_name, param->table_name,
msgbuf);
else
@@ -150,7 +150,7 @@ static void mi_check_print(HA_CHECK *param, const char* msg_type,
// collect errors printed by mi_check routines
-static void mi_check_print_msg(HA_CHECK *param, const char* msg_type,
+static void mi_check_print_msg(HA_CHECK *param, const LEX_CSTRING *msg_type,
const char *fmt, va_list args)
{
THD* thd = (THD*)param->thd;
@@ -165,7 +165,7 @@ static void mi_check_print_msg(HA_CHECK *param, const char* msg_type,
msg_length= my_vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);
msgbuf[sizeof(msgbuf) - 1] = 0; // healthy paranoia
- DBUG_PRINT(msg_type,("message: %s",msgbuf));
+ DBUG_PRINT(msg_type->str,("message: %s",msgbuf));
if (!thd->vio_ok())
{
@@ -177,9 +177,9 @@ static void mi_check_print_msg(HA_CHECK *param, const char* msg_type,
T_AUTO_REPAIR))
{
myf flag= 0;
- if (msg_type == MI_CHECK_INFO)
+ if (msg_type == &MI_CHECK_INFO)
flag= ME_NOTE;
- else if (msg_type == MI_CHECK_WARNING)
+ else if (msg_type == &MI_CHECK_WARNING)
flag= ME_WARNING;
my_message(ER_NOT_KEYFILE, msgbuf, MYF(flag));
if (thd->variables.log_warnings > 2 && ! thd->log_all_errors)
@@ -201,7 +201,7 @@ static void mi_check_print_msg(HA_CHECK *param, const char* msg_type,
protocol->prepare_for_resend();
protocol->store(name, length, system_charset_info);
- protocol->store(param->op_name, system_charset_info);
+ protocol->store(param->op_name, strlen(param->op_name), system_charset_info);
protocol->store(msg_type, system_charset_info);
protocol->store(msgbuf, msg_length, system_charset_info);
if (protocol->write())
@@ -615,7 +615,7 @@ void mi_check_print_error(HA_CHECK *param, const char *fmt,...)
return;
va_list args;
va_start(args, fmt);
- mi_check_print_msg(param, MI_CHECK_ERROR, fmt, args);
+ mi_check_print_msg(param, &MI_CHECK_ERROR, fmt, args);
va_end(args);
}
@@ -623,7 +623,7 @@ void mi_check_print_info(HA_CHECK *param, const char *fmt,...)
{
va_list args;
va_start(args, fmt);
- mi_check_print_msg(param, MI_CHECK_INFO, fmt, args);
+ mi_check_print_msg(param, &MI_CHECK_INFO, fmt, args);
param->note_printed= 1;
va_end(args);
}
@@ -634,7 +634,7 @@ void mi_check_print_warning(HA_CHECK *param, const char *fmt,...)
param->out_flag|= O_DATA_LOST;
va_list args;
va_start(args, fmt);
- mi_check_print_msg(param, MI_CHECK_WARNING, fmt, args);
+ mi_check_print_msg(param, &MI_CHECK_WARNING, fmt, args);
va_end(args);
}
diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc
index 2a7ca8d51f8..70a4d6aa284 100644
--- a/storage/myisammrg/ha_myisammrg.cc
+++ b/storage/myisammrg/ha_myisammrg.cc
@@ -1593,8 +1593,10 @@ void ha_myisammrg::append_create_info(String *packet)
if (file->merge_insert_method != MERGE_INSERT_DISABLED)
{
+ const char *type;
packet->append(STRING_WITH_LEN(" INSERT_METHOD="));
- packet->append(get_type(&merge_insert_method,file->merge_insert_method-1));
+ type= get_type(&merge_insert_method,file->merge_insert_method-1);
+ packet->append(type, strlen(type));
}
/*
There is no sence adding UNION clause in case there is no underlying
diff --git a/storage/oqgraph/ha_oqgraph.cc b/storage/oqgraph/ha_oqgraph.cc
index 79cec499a77..c2f52e2e5a2 100644
--- a/storage/oqgraph/ha_oqgraph.cc
+++ b/storage/oqgraph/ha_oqgraph.cc
@@ -149,12 +149,13 @@ static handler* oqgraph_create_handler(handlerton *hton, TABLE_SHARE *table,
" KEY (latch, destid, origid) USING HASH "\
" ) "
-#define append_opt(NAME,VAL) \
- if (share->option_struct->VAL) \
- { \
- sql.append(STRING_WITH_LEN(" " NAME "='")); \
- sql.append_for_single_quote(share->option_struct->VAL); \
- sql.append('\''); \
+#define append_opt(NAME,VAL) \
+ if (share->option_struct->VAL) \
+ { \
+ const char *val= share->option_struct->VAL; \
+ sql.append(STRING_WITH_LEN(" " NAME "='")); \
+ sql.append_for_single_quote(val, strlen(val)); \
+ sql.append('\''); \
}
int oqgraph_discover_table_structure(handlerton *hton, THD* thd,
@@ -162,7 +163,6 @@ int oqgraph_discover_table_structure(handlerton *hton, THD* thd,
{
StringBuffer<1024> sql(system_charset_info);
sql.copy(STRING_WITH_LEN(OQGRAPH_CREATE_TABLE), system_charset_info);
-
append_opt("data_table", table_name);
append_opt("origid", origid);
append_opt("destid", destid);
diff --git a/storage/rocksdb/ha_rocksdb.cc b/storage/rocksdb/ha_rocksdb.cc
index c0b87871f47..18101aa9bab 100644
--- a/storage/rocksdb/ha_rocksdb.cc
+++ b/storage/rocksdb/ha_rocksdb.cc
@@ -2278,14 +2278,14 @@ String timeout_message(const char *command, const char *name1,
const char *name2)
{
String msg;
- msg.append("Timeout on ");
- msg.append(command);
- msg.append(": ");
- msg.append(name1);
+ msg.append(STRING_WITH_LEN("Timeout on "));
+ msg.append(command, strlen(command));
+ msg.append(STRING_WITH_LEN(": "));
+ msg.append(name1, strlen(name1));
if (name2 && name2[0])
{
- msg.append(".");
- msg.append(name2);
+ msg.append('.');
+ msg.append(name2, strlen(name2));
}
return msg;
}
@@ -2473,7 +2473,8 @@ protected:
"Query: %s",
user_host_buff, thd->query());
}
- m_detailed_error = String(" (snapshot conflict)", system_charset_info);
+ m_detailed_error = String(STRING_WITH_LEN(" (snapshot conflict)"),
+ system_charset_info);
table_handler->m_deadlock_counter.inc();
return HA_ERR_ROCKSDB_STATUS_BUSY;
}
@@ -6908,7 +6909,8 @@ bool ha_rocksdb::get_error_message(const int error, String *const buf) {
}
if (error >= HA_ERR_ROCKSDB_FIRST && error <= HA_ERR_ROCKSDB_LAST) {
- buf->append(rdb_error_messages[error - HA_ERR_ROCKSDB_FIRST]);
+ const char *msg= rdb_error_messages[error - HA_ERR_ROCKSDB_FIRST];
+ buf->append(msg, strlen(msg));
}
// We can be called with the values which are < HA_ERR_FIRST because most
diff --git a/storage/rocksdb/rdb_datadic.cc b/storage/rocksdb/rdb_datadic.cc
index 5f46fd8acad..6c61cbfb728 100644
--- a/storage/rocksdb/rdb_datadic.cc
+++ b/storage/rocksdb/rdb_datadic.cc
@@ -3780,10 +3780,10 @@ bool Rdb_validate_tbls::check_frm_file(const std::string &fullpath,
const std::string &tablename,
bool *has_errors) {
/* Check this .frm file to see what engine it uses */
- String fullfilename(fullpath.c_str(), &my_charset_bin);
- fullfilename.append(FN_DIRSEP);
- fullfilename.append(tablename.c_str());
- fullfilename.append(".frm");
+ String fullfilename(fullpath.data(), fullpath.length(), &my_charset_bin);
+ fullfilename.append(STRING_WITH_LEN(FN_DIRSEP));
+ fullfilename.append(tablename.data(), tablename.length());
+ fullfilename.append(STRING_WITH_LEN(".frm"));
/*
This function will return the legacy_db_type of the table. Currently
diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc
index 0ca08bc3c47..e2f1909e8e2 100644
--- a/storage/sphinx/ha_sphinx.cc
+++ b/storage/sphinx/ha_sphinx.cc
@@ -2325,30 +2325,32 @@ int ha_sphinx::write_row ( const byte * )
// SphinxQL inserts only, pretty much similar to abandoned federated
char sQueryBuf[1024];
char sValueBuf[1024];
-
String sQuery ( sQueryBuf, sizeof(sQueryBuf), &my_charset_bin );
String sValue ( sValueBuf, sizeof(sQueryBuf), &my_charset_bin );
+ const char *query;
sQuery.length ( 0 );
sValue.length ( 0 );
CSphSEThreadTable * pTable = GetTls ();
- sQuery.append ( pTable && pTable->m_bReplace ? "REPLACE INTO " : "INSERT INTO " );
- sQuery.append ( m_pShare->m_sIndex );
- sQuery.append ( " (" );
+ query= pTable && pTable->m_bReplace ? "REPLACE INTO " : "INSERT INTO ";
+ sQuery.append (query, strlen(query));
+ sQuery.append ( m_pShare->m_sIndex, strlen(m_pShare->m_sIndex ));
+ sQuery.append (STRING_WITH_LEN(" (" ));
for ( Field ** ppField = table->field; *ppField; ppField++ )
{
- sQuery.append ( (*ppField)->field_name.str );
+ sQuery.append ( (*ppField)->field_name.str,
+ strlen((*ppField)->field_name.str));
if ( ppField[1] )
- sQuery.append ( ", " );
+ sQuery.append (STRING_WITH_LEN(", "));
}
- sQuery.append ( ") VALUES (" );
+ sQuery.append (STRING_WITH_LEN( ") VALUES (" ));
for ( Field ** ppField = table->field; *ppField; ppField++ )
{
if ( (*ppField)->is_null() )
{
- sQuery.append ( "''" );
+ sQuery.append (STRING_WITH_LEN( "''" ));
} else
{
@@ -2360,23 +2362,23 @@ int ha_sphinx::write_row ( const byte * )
pConv->quick_fix_field();
unsigned int uTs = (unsigned int) pConv->val_int();
- snprintf ( sValueBuf, sizeof(sValueBuf), "'%u'", uTs );
- sQuery.append ( sValueBuf );
+ uint len= my_snprintf ( sValueBuf, sizeof(sValueBuf), "'%u'", uTs );
+ sQuery.append ( sValueBuf, len );
} else
{
(*ppField)->val_str ( &sValue );
- sQuery.append ( "'" );
+ sQuery.append ( '\'' );
sValue.print ( &sQuery );
- sQuery.append ( "'" );
+ sQuery.append ( '\'' );
sValue.length(0);
}
}
if ( ppField[1] )
- sQuery.append ( ", " );
+ sQuery.append (STRING_WITH_LEN(", "));
}
- sQuery.append ( ")" );
+ sQuery.append ( ')' );
// FIXME? pretty inefficient to reconnect every time under high load,
// but this was intentionally written for a low load scenario..
@@ -2432,13 +2434,14 @@ int ha_sphinx::delete_row ( const byte * )
String sQuery ( sQueryBuf, sizeof(sQueryBuf), &my_charset_bin );
sQuery.length ( 0 );
- sQuery.append ( "DELETE FROM " );
- sQuery.append ( m_pShare->m_sIndex );
- sQuery.append ( " WHERE id=" );
+ sQuery.append (STRING_WITH_LEN( "DELETE FROM " ));
+ sQuery.append ( m_pShare->m_sIndex, strlen(m_pShare->m_sIndex));
+ sQuery.append (STRING_WITH_LEN( " WHERE id=" ));
char sValue[32];
- snprintf ( sValue, sizeof(sValue), "%lld", table->field[0]->val_int() );
- sQuery.append ( sValue );
+ uint length= my_snprintf ( sValue, sizeof(sValue), "%lld",
+ table->field[0]->val_int() );
+ sQuery.append ( sValue, length );
// FIXME? pretty inefficient to reconnect every time under high load,
// but this was intentionally written for a low load scenario..
diff --git a/storage/spider/hs_client/config.hpp b/storage/spider/hs_client/config.hpp
index 2880f2f5a33..6d85c7e3d7c 100644
--- a/storage/spider/hs_client/config.hpp
+++ b/storage/spider/hs_client/config.hpp
@@ -60,7 +60,7 @@ struct config {
conf_param *find(const String& key) const;
conf_param *find(const char *key) const;
String get_str(const String& key, const String& def =
- String("", &my_charset_bin)) const;
+ String("", 0, &my_charset_bin)) const;
String get_str(const char *key, const char *def = "") const;
long long get_int(const String& key, long long def = 0) const;
long long get_int(const char *key, long long def = 0) const;
diff --git a/storage/spider/hs_client/hstcpcli.cpp b/storage/spider/hs_client/hstcpcli.cpp
index 4c93b5a3a49..b3dea208f8f 100644
--- a/storage/spider/hs_client/hstcpcli.cpp
+++ b/storage/spider/hs_client/hstcpcli.cpp
@@ -196,9 +196,9 @@ hstcpcli::read_more()
errno = 0;
continue;
}
- error_str = String("read: failed", &my_charset_bin);
+ error_str = String(STRING_WITH_LEN("read: failed"), &my_charset_bin);
} else {
- error_str = String("read: eof", &my_charset_bin);
+ error_str = String(STRING_WITH_LEN("read: eof"), &my_charset_bin);
}
return rlen;
}
@@ -503,7 +503,7 @@ hstcpcli::response_recv(size_t& num_flds_r)
char *const err_end = start;
String e = String(err_begin, (uint32)(err_end - err_begin), &my_charset_bin);
if (!e.length()) {
- e = String("unknown_error", &my_charset_bin);
+ e = String(STRING_WITH_LEN("unknown_error"), &my_charset_bin);
}
return set_error(resp_code, e);
}
diff --git a/storage/spider/hs_client/socket.cpp b/storage/spider/hs_client/socket.cpp
index 45b8100e64c..e4541ce7273 100644
--- a/storage/spider/hs_client/socket.cpp
+++ b/storage/spider/hs_client/socket.cpp
@@ -63,7 +63,8 @@ socket_args::set(const config& conf)
} else {
const char *nd = !node.length() ? 0 : node.c_ptr();
if (resolve(nd, port.c_ptr()) != 0) {
- String message("getaddrinfo failed: ", &my_charset_bin);
+ String message(STRING_WITH_LEN("getaddrinfo failed: "),
+ &my_charset_bin);
message.reserve(node.length() + sizeof(":") - 1 + port.length());
message.append(node);
message.q_append(":", sizeof(":") - 1);
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index 2305173ab00..ea7714f2002 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -9694,8 +9694,8 @@ int spider_db_open_item_cond(
int error_num = 0;
List_iterator_fast<Item> lif(*(item_cond->argument_list()));
Item *item;
- char *func_name = NULL;
- int func_name_length = 0, restart_pos = 0;
+ LEX_CSTRING func_name= {0,0};
+ int restart_pos = 0;
DBUG_ENTER("spider_db_open_item_cond");
if (str)
{
@@ -9731,15 +9731,13 @@ restart_first:
if (str)
{
restart_pos = str->length();
- if (!func_name)
- {
- func_name = (char*) item_cond->func_name();
- func_name_length = strlen(func_name);
- }
- if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN * 2))
+ if (!func_name.str)
+ func_name= item_cond->func_name_cstring();
+
+ if (str->reserve(func_name.length + SPIDER_SQL_SPACE_LEN * 2))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_SPACE_STR, SPIDER_SQL_SPACE_LEN);
- str->q_append(func_name, func_name_length);
+ str->q_append(func_name.str, func_name.length);
str->q_append(SPIDER_SQL_SPACE_STR, SPIDER_SQL_SPACE_LEN);
}
diff --git a/storage/spider/spd_db_handlersocket.cc b/storage/spider/spd_db_handlersocket.cc
index edc9ee33477..030201e61ae 100644
--- a/storage/spider/spd_db_handlersocket.cc
+++ b/storage/spider/spd_db_handlersocket.cc
@@ -2877,6 +2877,7 @@ int spider_db_handlersocket_util::open_item_func(
int error_num;
Item *item, **item_list = item_func->arguments();
uint roop_count, item_count = item_func->argument_count(), start_item = 0;
+ LEX_CSTRING func_name_c;
const char *func_name = SPIDER_SQL_NULL_CHAR_STR,
*separator_str = SPIDER_SQL_NULL_CHAR_STR,
*last_str = SPIDER_SQL_NULL_CHAR_STR;
@@ -2904,8 +2905,9 @@ int spider_db_handlersocket_util::open_item_func(
last_str_length = SPIDER_SQL_IS_NOT_NULL_LEN;
break;
case Item_func::UNKNOWN_FUNC:
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (func_name_length == 1 &&
@@ -3104,11 +3106,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3142,11 +3146,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3276,11 +3282,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3330,11 +3338,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3371,11 +3381,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3410,11 +3422,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3465,11 +3479,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3564,11 +3580,13 @@ int spider_db_handlersocket_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3654,8 +3672,9 @@ int spider_db_handlersocket_util::open_item_func(
}
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(func_name, func_name_length);
@@ -3665,8 +3684,9 @@ int spider_db_handlersocket_util::open_item_func(
case Item_func::NEG_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(func_name, func_name_length);
@@ -3699,8 +3719,9 @@ int spider_db_handlersocket_util::open_item_func(
separator_str = SPIDER_SQL_AND_STR;
separator_str_length = SPIDER_SQL_AND_LEN;
} else {
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
separator_str = SPIDER_SQL_AND_STR;
separator_str_length = SPIDER_SQL_AND_LEN;
}
@@ -3712,8 +3733,9 @@ int spider_db_handlersocket_util::open_item_func(
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (str->reserve(func_name_length + SPIDER_SQL_OPEN_PAREN_LEN))
@@ -3791,8 +3813,9 @@ int spider_db_handlersocket_util::open_item_func(
case Item_func::SP_OVERLAPS_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (str->reserve(
@@ -3824,8 +3847,9 @@ int spider_db_handlersocket_util::open_item_func(
case Item_func::LIKE_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
}
break;
default:
@@ -3836,8 +3860,9 @@ int spider_db_handlersocket_util::open_item_func(
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.length;
}
break;
}
@@ -3958,8 +3983,9 @@ int spider_db_handlersocket_util::open_item_sum_func(
case Item_sum::MIN_FUNC:
case Item_sum::MAX_FUNC:
{
- const char *func_name = item_sum->func_name();
- uint func_name_length = strlen(func_name);
+ LEX_CSTRING func_name_c = item_sum->func_name_cstring();
+ const char *func_name = func_name_c.str;
+ uint func_name_length = func_name_c.length;
Item *item, **args = item_sum->get_args();
if (str)
{
diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc
index 6821e36e445..5b257444bfc 100644
--- a/storage/spider/spd_db_mysql.cc
+++ b/storage/spider/spd_db_mysql.cc
@@ -3825,13 +3825,14 @@ size_t spider_db_mbase::escape_string(
const char *from,
size_t from_length
) {
+ my_bool overflow;
DBUG_ENTER("spider_db_mbase::escape_string");
DBUG_PRINT("info",("spider this=%p", this));
if (db_conn->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES)
DBUG_RETURN(escape_quotes_for_mysql(db_conn->charset, to, 0,
- from, from_length));
+ from, from_length, &overflow));
DBUG_RETURN(escape_string_for_mysql(db_conn->charset, to, 0,
- from, from_length));
+ from, from_length, &overflow));
}
bool spider_db_mbase::have_lock_table_list()
@@ -5799,6 +5800,8 @@ int spider_db_mbase_util::open_item_func(
Item *item, **item_list = item_func->arguments();
Field *field;
uint roop_count, item_count = item_func->argument_count(), start_item = 0;
+ LEX_CSTRING org_func_name= {SPIDER_SQL_NULL_CHAR_STR,
+ SPIDER_SQL_NULL_CHAR_LEN};
const char *func_name = SPIDER_SQL_NULL_CHAR_STR,
*separator_str = SPIDER_SQL_NULL_CHAR_STR,
*last_str = SPIDER_SQL_NULL_CHAR_STR;
@@ -5826,8 +5829,9 @@ int spider_db_mbase_util::open_item_func(
last_str_length = SPIDER_SQL_IS_NOT_NULL_LEN;
break;
case Item_func::UNKNOWN_FUNC:
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ org_func_name= item_func->func_name_cstring();
+ func_name= org_func_name.str;
+ func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (func_name_length == 1 &&
@@ -6028,9 +6032,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6066,9 +6071,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6200,9 +6206,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6254,9 +6261,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6295,9 +6303,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6334,9 +6343,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6389,9 +6399,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6488,9 +6499,10 @@ int spider_db_mbase_util::open_item_func(
{
const char *child_func_name;
int child_func_name_length;
+ LEX_CSTRING org_func_name= ifunc->func_name_cstring();
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name = org_func_name.str;
+ child_func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -6576,8 +6588,9 @@ int spider_db_mbase_util::open_item_func(
}
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(func_name, func_name_length);
@@ -6587,8 +6600,9 @@ int spider_db_mbase_util::open_item_func(
case Item_func::NEG_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(func_name, func_name_length);
@@ -6621,8 +6635,9 @@ int spider_db_mbase_util::open_item_func(
separator_str = SPIDER_SQL_AND_STR;
separator_str_length = SPIDER_SQL_AND_LEN;
} else {
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
separator_str = SPIDER_SQL_AND_STR;
separator_str_length = SPIDER_SQL_AND_LEN;
}
@@ -6635,8 +6650,9 @@ int spider_db_mbase_util::open_item_func(
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (str->reserve(func_name_length + SPIDER_SQL_OPEN_PAREN_LEN))
@@ -6714,8 +6730,9 @@ int spider_db_mbase_util::open_item_func(
case Item_func::SP_OVERLAPS_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (str->reserve(
@@ -6746,8 +6763,9 @@ int spider_db_mbase_util::open_item_func(
case Item_func::GT_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
}
break;
case Item_func::LIKE_FUNC:
@@ -6761,8 +6779,9 @@ int spider_db_mbase_util::open_item_func(
}
else
{
- func_name = (char*)item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
}
}
break;
@@ -6777,8 +6796,9 @@ int spider_db_mbase_util::open_item_func(
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_func->func_name_cstring();
+ func_name = org_func_name.str;
+ func_name_length = org_func_name.length;
}
break;
}
@@ -6911,8 +6931,9 @@ int spider_db_mbase_util::open_item_sum_func(
case Item_sum::MIN_FUNC:
case Item_sum::MAX_FUNC:
{
- const char *func_name = item_sum->func_name();
- uint func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_sum->func_name_cstring();
+ const char *func_name = org_func_name.str;
+ uint func_name_length = org_func_name.length;
Item *item, **args = item_sum->get_args();
if (str)
{
@@ -6957,8 +6978,9 @@ int spider_db_mbase_util::open_item_sum_func(
{
if (!use_fields)
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
- const char *func_name = item_sum->func_name();
- uint func_name_length = strlen(func_name);
+ LEX_CSTRING org_func_name= item_sum->func_name_cstring();
+ const char *func_name = org_func_name.str;
+ uint func_name_length = org_func_name.length;
Item *item, **args = item_sum->get_args();
if (str)
{
diff --git a/storage/spider/spd_db_oracle.cc b/storage/spider/spd_db_oracle.cc
index 92b4556a198..77d3c808b70 100644
--- a/storage/spider/spd_db_oracle.cc
+++ b/storage/spider/spd_db_oracle.cc
@@ -3124,6 +3124,7 @@ int spider_db_oracle_util::open_item_func(
int error_num;
Item *item, **item_list = item_func->arguments();
Field *field;
+ LEX_CSTRING func_name_c;
uint roop_count, item_count = item_func->argument_count(), start_item = 0;
const char *func_name = SPIDER_SQL_NULL_CHAR_STR,
*separator_str = SPIDER_SQL_NULL_CHAR_STR,
@@ -3152,8 +3153,9 @@ int spider_db_oracle_util::open_item_func(
last_str_length = SPIDER_SQL_IS_NOT_NULL_LEN;
break;
case Item_func::UNKNOWN_FUNC:
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (func_name_length == 1 &&
@@ -3352,11 +3354,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3390,11 +3394,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3524,11 +3530,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3578,11 +3586,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3619,11 +3629,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3658,11 +3670,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3713,11 +3727,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -3948,11 +3964,13 @@ int spider_db_oracle_util::open_item_func(
Item_func *ifunc = (Item_func *) item;
if (ifunc->functype() == Item_func::UNKNOWN_FUNC)
{
+ LEX_CSTRING child_func_name_c;
const char *child_func_name;
int child_func_name_length;
DBUG_PRINT("info",("spider child is UNKNOWN_FUNC"));
- child_func_name = (char*) ifunc->func_name();
- child_func_name_length = strlen(child_func_name);
+ child_func_name_c = ifunc->func_name_cstring();
+ child_func_name = child_func_name_c.str;
+ child_func_name_length = child_func_name_c.length;
DBUG_PRINT("info",("spider child func_name is %s", child_func_name));
if (
child_func_name_length == 10 &&
@@ -4038,8 +4056,9 @@ int spider_db_oracle_util::open_item_func(
}
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(func_name, func_name_length);
@@ -4049,8 +4068,9 @@ int spider_db_oracle_util::open_item_func(
case Item_func::NEG_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
if (str->reserve(func_name_length + SPIDER_SQL_SPACE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(func_name, func_name_length);
@@ -4083,8 +4103,9 @@ int spider_db_oracle_util::open_item_func(
separator_str = SPIDER_SQL_AND_STR;
separator_str_length = SPIDER_SQL_AND_LEN;
} else {
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
separator_str = SPIDER_SQL_AND_STR;
separator_str_length = SPIDER_SQL_AND_LEN;
}
@@ -4097,8 +4118,9 @@ int spider_db_oracle_util::open_item_func(
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (str->reserve(func_name_length + SPIDER_SQL_OPEN_PAREN_LEN))
@@ -4176,8 +4198,9 @@ int spider_db_oracle_util::open_item_func(
case Item_func::SP_OVERLAPS_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
if (str->reserve(
@@ -4208,8 +4231,9 @@ int spider_db_oracle_util::open_item_func(
case Item_func::GT_FUNC:
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
}
break;
case Item_func::LIKE_FUNC:
@@ -4223,8 +4247,9 @@ int spider_db_oracle_util::open_item_func(
}
else
{
- func_name = (char*)item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
}
}
break;
@@ -4239,8 +4264,9 @@ int spider_db_oracle_util::open_item_func(
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
if (str)
{
- func_name = (char*) item_func->func_name();
- func_name_length = strlen(func_name);
+ func_name_c = item_func->func_name_cstring();
+ func_name = func_name_c.str;
+ func_name_length = func_name_c.lengthstr;
}
break;
}
@@ -4366,8 +4392,9 @@ int spider_db_oracle_util::open_item_sum_func(
case Item_sum::MIN_FUNC:
case Item_sum::MAX_FUNC:
{
- const char *func_name = item_sum->func_name();
- uint func_name_length = strlen(func_name);
+ LEX_CSTRING func_name_c= item_sum->func_name_cstring();
+ const char *func_name = func_name_c.str;
+ uint func_name_length = func_name_c.length;
Item *item, **args = item_sum->get_args();
if (str)
{
@@ -4427,10 +4454,11 @@ size_t spider_db_oracle_util::escape_string(
size_t from_length,
CHARSET_INFO *access_charset
) {
+ my_bool overflow;
DBUG_ENTER("spider_db_oracle::escape_string");
DBUG_PRINT("info",("spider this=%p", this));
DBUG_RETURN(escape_quotes_for_mysql(access_charset, to, 0,
- from, from_length));
+ from, from_length, &overflow));
}
int spider_db_oracle_util::append_escaped_util(
diff --git a/storage/spider/spd_malloc.cc b/storage/spider/spd_malloc.cc
index d16574c6ac2..8a99e648afc 100644
--- a/storage/spider/spd_malloc.cc
+++ b/storage/spider/spd_malloc.cc
@@ -292,7 +292,7 @@ spider_string::spider_string(
spider_string::spider_string(
const char *str,
CHARSET_INFO *cs
-) : str(str, cs), next(NULL)
+) : str(str, strlen(str), cs), next(NULL)
{
DBUG_ENTER("spider_string::spider_string");
DBUG_PRINT("info",("spider this=%p", this));
@@ -853,7 +853,7 @@ bool spider_string::append(
DBUG_ASSERT(mem_calc_inited);
DBUG_ASSERT((!current_alloc_mem && !str.is_alloced()) ||
current_alloc_mem == str.alloced_length());
- bool res = str.append(s);
+ bool res = str.append(s, strlen(s));
SPIDER_STRING_CALC_MEM;
DBUG_RETURN(res);
}
@@ -1216,13 +1216,15 @@ void spider_string::append_escape_string(
const char *st,
uint len
) {
+ my_bool overflow;
DBUG_ENTER("spider_string::append_escape_string");
DBUG_PRINT("info",("spider this=%p", this));
DBUG_ASSERT(mem_calc_inited);
DBUG_ASSERT((!current_alloc_mem && !str.is_alloced()) ||
current_alloc_mem == str.alloced_length());
str.length(str.length() + escape_string_for_mysql(
- str.charset(), (char *) str.ptr() + str.length(), 0, st, len));
+ str.charset(), (char *) str.ptr() + str.length(), 0, st, len,
+ &overflow));
DBUG_VOID_RETURN;
}
@@ -1231,13 +1233,14 @@ void spider_string::append_escape_string(
uint len,
CHARSET_INFO *cs
) {
+ my_bool overflow;
DBUG_ENTER("spider_string::append_escape_string");
DBUG_PRINT("info",("spider this=%p", this));
DBUG_ASSERT(mem_calc_inited);
DBUG_ASSERT((!current_alloc_mem && !str.is_alloced()) ||
current_alloc_mem == str.alloced_length());
str.length(str.length() + escape_string_for_mysql(
- cs, (char *) str.ptr() + str.length(), 0, st, len));
+ cs, (char *) str.ptr() + str.length(), 0, st, len, &overflow));
DBUG_VOID_RETURN;
}
@@ -1286,7 +1289,7 @@ bool spider_string::append_for_single_quote(
DBUG_ASSERT((!current_alloc_mem && !str.is_alloced()) ||
current_alloc_mem == str.alloced_length());
#ifdef SPIDER_HAS_APPEND_FOR_SINGLE_QUOTE
- bool res = str.append_for_single_quote(st);
+ bool res = str.append_for_single_quote(st, strlen(st));
#else
String ststr(st, str.charset());
bool res = append_escaped(&str, &ststr);