Commit 5831ddcf authored by Michael Widenius's avatar Michael Widenius

Merge with bug fixes

parents 824ce5f3 97e834e1
......@@ -1188,11 +1188,11 @@ void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var)
*(to++)+= *(from++);
/* Handle the not ulong variables. See end of system_status_var */
to_var->bytes_received= from_var->bytes_received;
to_var->bytes_received+= from_var->bytes_received;
to_var->bytes_sent+= from_var->bytes_sent;
to_var->rows_read+= from_var->rows_read;
to_var->rows_sent+= from_var->rows_sent;
to_var->binlog_bytes_written= from_var->binlog_bytes_written;
to_var->binlog_bytes_written+= from_var->binlog_bytes_written;
to_var->cpu_time+= from_var->cpu_time;
to_var->busy_time+= from_var->busy_time;
}
......
......@@ -11009,10 +11009,21 @@ static bool create_internal_tmp_table(TABLE *table,TMP_TABLE_PARAM *param,
OPTION_BIG_TABLES)
create_info.data_file_length= ~(ulonglong) 0;
/*
The logic for choosing the record format:
The STATIC_RECORD format is the fastest one, because it's so simple,
so we use this by default for short rows.
BLOCK_RECORD caches both row and data, so this is generally faster than
DYNAMIC_RECORD. The one exception is when we write to tmp table
(no updates == no sum fields) in which case BLOCK RECORD is slower as
we first write the row, then check for key conflicts and then we have to
delete the row.
*/
if ((error= maria_create(share->table_name.str,
share->reclength < 64 &&
!share->blob_fields ? STATIC_RECORD :
BLOCK_RECORD,
(share->reclength < 64 &&
!share->blob_fields ? STATIC_RECORD :
!param->sum_func_count ? DYNAMIC_RECORD :
BLOCK_RECORD),
share->keys, &keydef,
(uint) (param->recinfo-param->start_recinfo),
param->start_recinfo,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment