diff --git a/sql/log_event.cc b/sql/log_event.cc index a6034c8d5b0..a177629590b 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -5608,8 +5608,8 @@ void Rows_log_event::pack_info(Protocol *protocol) char buf[256]; char const *const flagstr= get_flags(STMT_END_F) ? " flags: STMT_END_F" : ""; - my_size_t bytes= snprintf(buf, sizeof(buf), - "table_id: %lu%s", m_table_id, flagstr); + my_size_t bytes= my_snprintf(buf, sizeof(buf), + "table_id: %lu%s", m_table_id, flagstr); protocol->store(buf, bytes, &my_charset_bin); } #endif @@ -6030,8 +6030,8 @@ bool Table_map_log_event::write_data_body(IO_CACHE *file) void Table_map_log_event::pack_info(Protocol *protocol) { char buf[256]; - my_size_t bytes= snprintf(buf, sizeof(buf), - "table_id: %lu (%s.%s)", + my_size_t bytes= my_snprintf(buf, sizeof(buf), + "table_id: %lu (%s.%s)", m_table_id, m_dbnam, m_tblnam); protocol->store(buf, bytes, &my_charset_bin); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 4745fcfdc35..3ad8f49fb76 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1602,6 +1602,7 @@ public: lock(0) {} int prepare(List &list, SELECT_LEX_UNIT *u); + friend class select_create_prepare_hooks; void binlog_show_create_table(TABLE **tables, uint count); void store_values(List &values); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 48bd2c57d9e..6e797f558d4 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2498,25 +2498,28 @@ bool select_insert::send_eof() CREATE TABLE (SELECT) ... ***************************************************************************/ +/* HPUX compiler bug prevents this from being a local class, since then it + does not have access to protected member select_create::thd. +*/ +class select_create_prepare_hooks : public TABLEOP_HOOKS { +public: + select_create_prepare_hooks(select_create *x) : ptr(x) { } + virtual void do_prelock(TABLE **tables, uint count) + { + if (ptr->thd->current_stmt_binlog_row_based) + ptr->binlog_show_create_table(tables, count); + } + +private: + select_create *ptr; +}; + int select_create::prepare(List &values, SELECT_LEX_UNIT *u) { DBUG_ENTER("select_create::prepare"); - class MY_HOOKS : public TABLEOP_HOOKS { - public: - MY_HOOKS(select_create *x) : ptr(x) { } - virtual void do_prelock(TABLE **tables, uint count) - { - if (ptr->thd->current_stmt_binlog_row_based) - ptr->binlog_show_create_table(tables, count); - } - - private: - select_create *ptr; - }; - - MY_HOOKS hooks(this); + select_create_prepare_hooks hooks(this); unit= u; table= create_table_from_items(thd, create_info, create_table, diff --git a/storage/innobase/btr/btr0sea.c b/storage/innobase/btr/btr0sea.c index a2f571f11e9..d8c3cfb7eda 100644 --- a/storage/innobase/btr/btr0sea.c +++ b/storage/innobase/btr/btr0sea.c @@ -1604,12 +1604,12 @@ btr_search_validate(void) mem_heap_t* heap = NULL; ulint offsets_[REC_OFFS_NORMAL_SIZE]; ulint* offsets = offsets_; - *offsets_ = (sizeof offsets_) / sizeof *offsets_; - /* How many cells to check before temporarily releasing btr_search_latch. */ ulint chunk_size = 10000; + *offsets_ = (sizeof offsets_) / sizeof *offsets_; + rw_lock_x_lock(&btr_search_latch); cell_count = hash_get_n_cells(btr_search_sys->hash_index);