diff --git a/storage/tianchi/datatype_cnvrtr.cc b/storage/tianchi/datatype_cnvrtr.cc index 4bdcd98d396bff0dcfd4751aa9e47a7ee65a9b66..f3ccca1c0ea724a0b609af849d5f60088bdec025 100644 --- a/storage/tianchi/datatype_cnvrtr.cc +++ b/storage/tianchi/datatype_cnvrtr.cc @@ -1605,6 +1605,11 @@ void copy_column_data_to_mysql(field_info_t *field_info, const field_cnvrt_aux_t if (is_index_only) { uint32_t blob_len = field_info->field_len; char *blob_buf = (char *)my_malloc(PSI_NOT_INSTRUMENTED, blob_len * sizeof(char), MYF(MY_WME)); + if (blob_buf == nullptr) { + tse_log_error("[cantian2mysql]Apply for blob buf:%u Failed", blob_len); + my_error(ER_OUT_OF_RESOURCES, MYF(0), "BLOB DATA"); + return; + } memcpy(blob_buf, field_info->cantian_cur_field, blob_len); memcpy(field_info->mysql_cur_field, &blob_buf, sizeof(char *)); bitmap_set_bit(field_info->field->table->read_set, field_info->field->field_index()); diff --git a/storage/tianchi/ha_tse.cc b/storage/tianchi/ha_tse.cc index 703d903a01b89245b541d067128db1c79ee35be8..47f5c41a28bd175fc98d59bc182488f30ab6da93 100644 --- a/storage/tianchi/ha_tse.cc +++ b/storage/tianchi/ha_tse.cc @@ -2637,6 +2637,10 @@ void ha_tse::start_bulk_insert(ha_rows rows) { if (m_rec_buf_data == nullptr) { m_rec_buf_data = (uchar *)my_malloc(PSI_NOT_INSTRUMENTED, MAX_RECORD_BUFFER_SIZE_TSE, MYF(MY_WME)); } + if (m_rec_buf_data == nullptr) { + tse_log_error("alloc mem failed, m_prefetch_buf size(%u)", MAX_RECORD_BUFFER_SIZE_TSE); + return; + } if (rows == 1 || m_is_insert_dup || m_is_replace || m_ignore_dup || table->s->blob_fields > 0 || table->next_number_field || m_rec_buf_data == nullptr) { @@ -5239,12 +5243,22 @@ int ha_tse::initialize_cbo_stats() *m_share->cbo_stats = {0, 0, 0, 0, 0, nullptr, nullptr}; m_share->cbo_stats->tse_cbo_stats_table = (tse_cbo_stats_table_t*)my_malloc(PSI_NOT_INSTRUMENTED, sizeof(tse_cbo_stats_table_t), MYF(MY_WME)); + if (m_share->cbo_stats->tse_cbo_stats_table == nullptr) { + tse_log_error("alloc shm mem failed, m_share->cbo_stats size(%lu)", sizeof(tse_cbo_stats_table_t)); + return ERR_ALLOC_MEMORY; + } m_share->cbo_stats->tse_cbo_stats_table->columns = (tse_cbo_stats_column_t*)my_malloc(PSI_NOT_INSTRUMENTED, table->s->fields * sizeof(tse_cbo_stats_column_t), MYF(MY_WME)); - + if (m_share->cbo_stats->tse_cbo_stats_table->columns == nullptr) { + tse_log_error("alloc shm mem failed, m_share->cbo_stats size(%lu)", table->s->fields * sizeof(tse_cbo_stats_column_t)); + return ERR_ALLOC_MEMORY; + } m_share->cbo_stats->ndv_keys = (uint32_t*)my_malloc(PSI_NOT_INSTRUMENTED, table->s->keys * sizeof(uint32_t) * MAX_KEY_COLUMNS, MYF(MY_WME)); - + if (m_share->cbo_stats->ndv_keys == nullptr) { + tse_log_error("alloc shm mem failed, m_share->cbo_stats size(%lu)", table->s->keys * sizeof(uint32_t) * MAX_KEY_COLUMNS); + return ERR_ALLOC_MEMORY; + } m_share->cbo_stats->msg_len = table->s->fields * sizeof(tse_cbo_stats_column_t); m_share->cbo_stats->key_len = table->s->keys * sizeof(uint32_t) * MAX_KEY_COLUMNS; return CT_SUCCESS; diff --git a/storage/tianchi/ha_tsepart.cc b/storage/tianchi/ha_tsepart.cc index dc0ad9ca86d2be7a1ffbfab787e5a057c5af2947..1111a7c5e849d0528c0d92941bd3c331920a675c 100644 --- a/storage/tianchi/ha_tsepart.cc +++ b/storage/tianchi/ha_tsepart.cc @@ -278,6 +278,9 @@ void ha_tsepart::start_bulk_insert(ha_rows rows) { // m_max_batch_num is fixed after open table, if table structrue is changed, it should be closed and reopened m_bulk_insert_parts = (ctc_part_t *)my_malloc(PSI_NOT_INSTRUMENTED, m_max_batch_num * sizeof(ctc_part_t), MYF(MY_WME)); + if (m_bulk_insert_parts == nullptr) { + tse_log_error("[cantian2mysql]Apply for blob buf:%lu Failed", m_max_batch_num * sizeof(ctc_part_t)); + } } } } @@ -1011,11 +1014,23 @@ int ha_tsepart::initialize_cbo_stats() { m_part_share->cbo_stats->tse_cbo_stats_table = (tse_cbo_stats_table_t*)my_malloc(PSI_NOT_INSTRUMENTED, part_num * sizeof(tse_cbo_stats_table_t), MYF(MY_WME)); + if (m_part_share->cbo_stats->tse_cbo_stats_table == nullptr) { + tse_log_error("alloc shm mem failed, m_part_share->cbo_stats size(%lu)", part_num * sizeof(tse_cbo_stats_table_t)); + return ERR_ALLOC_MEMORY; + } m_part_share->cbo_stats->ndv_keys = (uint32_t*)my_malloc(PSI_NOT_INSTRUMENTED, table->s->keys * sizeof(uint32_t) * MAX_KEY_COLUMNS, MYF(MY_WME)); + if (m_part_share->cbo_stats->ndv_keys == nullptr) { + tse_log_error("alloc shm mem failed, m_part_share->cbo_stats size(%lu)", table->s->keys * sizeof(uint32_t) * MAX_KEY_COLUMNS); + return ERR_ALLOC_MEMORY; + } for (uint i = 0; i < part_num; i++) { m_part_share->cbo_stats->tse_cbo_stats_table[i].columns = (tse_cbo_stats_column_t*)my_malloc(PSI_NOT_INSTRUMENTED, table->s->fields * sizeof(tse_cbo_stats_column_t), MYF(MY_WME)); + if (m_part_share->cbo_stats->tse_cbo_stats_table[i].columns == nullptr) { + tse_log_error("alloc shm mem failed, m_part_share->cbo_stats size(%lu)", table->s->fields * sizeof(tse_cbo_stats_column_t)); + return ERR_ALLOC_MEMORY; + } } m_part_share->cbo_stats->msg_len = table->s->fields * sizeof(tse_cbo_stats_column_t); m_part_share->cbo_stats->key_len = table->s->keys * sizeof(uint32_t) * MAX_KEY_COLUMNS; diff --git a/storage/tianchi/mysql_daac_plugin.cc b/storage/tianchi/mysql_daac_plugin.cc index 91c6b10c0d77b010c3ce3461843b35d2e504c3d3..b0c665c57b9d088a4336de3596114f1f3e655234 100644 --- a/storage/tianchi/mysql_daac_plugin.cc +++ b/storage/tianchi/mysql_daac_plugin.cc @@ -119,6 +119,10 @@ int daemon_daac_plugin_init() { daac_context = (struct mysql_daac_context *)my_malloc( PSI_NOT_INSTRUMENTED, sizeof(struct mysql_daac_context), MYF(0)); + if (daac_context == nullptr) { + tse_log_error("alloc shm mem failed, m_part_share->cbo_stats size(%lu)", sizeof(struct mysql_daac_context)); + return ERR_ALLOC_MEMORY; + } my_thread_attr_t startup_attr; /* Thread attributes */ my_thread_attr_init(&startup_attr);