diff options
Diffstat (limited to 'storage')
-rw-r--r-- | storage/connect/ha_connect.cc | 74 | ||||
-rw-r--r-- | storage/federated/ha_federated.cc | 29 | ||||
-rw-r--r-- | storage/federatedx/ha_federatedx.cc | 60 | ||||
-rw-r--r-- | storage/federatedx/ha_federatedx.h | 2 | ||||
-rw-r--r-- | storage/maria/ha_maria.cc | 30 | ||||
-rw-r--r-- | storage/myisam/ha_myisam.cc | 28 | ||||
-rw-r--r-- | storage/myisammrg/ha_myisammrg.cc | 4 | ||||
-rw-r--r-- | storage/oqgraph/ha_oqgraph.cc | 14 | ||||
-rw-r--r-- | storage/rocksdb/ha_rocksdb.cc | 18 | ||||
-rw-r--r-- | storage/rocksdb/rdb_datadic.cc | 8 | ||||
-rw-r--r-- | storage/sphinx/ha_sphinx.cc | 41 | ||||
-rw-r--r-- | storage/spider/hs_client/config.hpp | 2 | ||||
-rw-r--r-- | storage/spider/hs_client/hstcpcli.cpp | 6 | ||||
-rw-r--r-- | storage/spider/hs_client/socket.cpp | 3 | ||||
-rw-r--r-- | storage/spider/spd_db_conn.cc | 16 | ||||
-rw-r--r-- | storage/spider/spd_db_handlersocket.cc | 94 | ||||
-rw-r--r-- | storage/spider/spd_db_mysql.cc | 102 | ||||
-rw-r--r-- | storage/spider/spd_db_oracle.cc | 102 | ||||
-rw-r--r-- | storage/spider/spd_malloc.cc | 13 |
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); |