diff options
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 6166771e5d1..581f47ac7f7 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -240,6 +240,7 @@ THD::THD() bzero(ha_data, sizeof(ha_data)); mysys_var=0; binlog_evt_union.do_union= FALSE; + enable_slow_log= 0; #ifndef DBUG_OFF dbug_sentry=THD_SENTRY_MAGIC; #endif @@ -1632,7 +1633,7 @@ Statement::Statement(enum enum_state state_arg, ulong id_arg, ulong alloc_block_size, ulong prealloc_size) :Query_arena(&main_mem_root, state_arg), id(id_arg), - set_query_id(1), + mark_used_columns(MARK_COLUMNS_READ), lex(&main_lex), query(0), query_length(0), @@ -1652,7 +1653,7 @@ Query_arena::Type Statement::type() const void Statement::set_statement(Statement *stmt) { id= stmt->id; - set_query_id= stmt->set_query_id; + mark_used_columns= stmt->mark_used_columns; lex= stmt->lex; query= stmt->query; query_length= stmt->query_length; @@ -2428,6 +2429,7 @@ field_type_name(enum_field_types type) return "Unknown"; } + my_size_t THD::max_row_length_blob(TABLE *table, const byte *data) const { my_size_t length= 0; @@ -2444,53 +2446,52 @@ my_size_t THD::max_row_length_blob(TABLE *table, const byte *data) const return length; } + my_size_t THD::pack_row(TABLE *table, MY_BITMAP const* cols, byte *row_data, const byte *record) const { - Field **p_field= table->field, *field= *p_field; + Field **p_field= table->field, *field; int n_null_bytes= table->s->null_bytes; - my_ptrdiff_t const offset= record - (byte*) table->record[0]; - + byte *ptr; + uint i; + my_ptrdiff_t const offset= (my_ptrdiff_t) (record - (byte*) + table->record[0]); memcpy(row_data, record, n_null_bytes); - byte *ptr= row_data+n_null_bytes; + ptr= row_data+n_null_bytes; - for (int i= 0 ; field ; i++, p_field++, field= *p_field) + for (i= 0 ; (field= *p_field) ; i++, p_field++) { if (bitmap_is_set(cols,i)) ptr= (byte*)field->pack((char *) ptr, field->ptr + offset); } - - /* - my_ptrdiff_t is signed, size_t is unsigned. Assert that the - conversion will work correctly. - */ - DBUG_ASSERT(ptr - row_data >= 0); - return (static_cast<size_t>(ptr - row_data)); + return (static_cast<my_size_t>(ptr - row_data)); } + int THD::binlog_write_row(TABLE* table, bool is_trans, MY_BITMAP const* cols, my_size_t colcnt, byte const *record) { DBUG_ASSERT(current_stmt_binlog_row_based && mysql_bin_log.is_open()); - /* - Pack records into format for transfer. We are allocating more - memory than needed, but that doesn't matter. + /* + Pack records into format for transfer. We are allocating more + memory than needed, but that doesn't matter. */ bool error= 0; byte *row_data= table->write_row_record; my_size_t const max_len= max_row_length(table, record); - - /* - * Allocate room for a row (if needed) - */ + my_size_t len; + Rows_log_event *ev; + + /* Allocate room for a row (if needed) */ if (!row_data) { if (!table->s->blob_fields) { /* multiply max_len by 2 so it can be used for update_row as well */ - table->write_row_record= (byte *) alloc_root(&table->mem_root, 2*max_len); + table->write_row_record= (byte *) alloc_root(&table->mem_root, + 2*max_len); if (!table->write_row_record) return HA_ERR_OUT_OF_MEM; row_data= table->write_row_record; @@ -2498,12 +2499,11 @@ int THD::binlog_write_row(TABLE* table, bool is_trans, else if (unlikely(!(row_data= (byte *) my_malloc(max_len, MYF(MY_WME))))) return HA_ERR_OUT_OF_MEM; } - my_size_t const len= pack_row(table, cols, row_data, record); + len= pack_row(table, cols, row_data, record); - Rows_log_event* const ev= - binlog_prepare_pending_rows_event(table, server_id, cols, colcnt, - len, is_trans, - static_cast<Write_rows_log_event*>(0)); + ev= binlog_prepare_pending_rows_event(table, server_id, cols, colcnt, + len, is_trans, + static_cast<Write_rows_log_event*>(0)); /* add_row_data copies row_data to internal buffer */ error= likely(ev != 0) ? ev->add_row_data(row_data,len) : HA_ERR_OUT_OF_MEM ; |