mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/dbdata/psergey/mysql-4.1-ps-merge
This commit is contained in:
@ -417,6 +417,7 @@ typedef struct st_mi_sort_param
|
|||||||
#define MI_MIN_SIZE_BULK_INSERT_TREE 16384 /* this is per key */
|
#define MI_MIN_SIZE_BULK_INSERT_TREE 16384 /* this is per key */
|
||||||
#define MI_MIN_ROWS_TO_USE_BULK_INSERT 100
|
#define MI_MIN_ROWS_TO_USE_BULK_INSERT 100
|
||||||
#define MI_MIN_ROWS_TO_DISABLE_INDEXES 100
|
#define MI_MIN_ROWS_TO_DISABLE_INDEXES 100
|
||||||
|
#define MI_MIN_ROWS_TO_USE_WRITE_CACHE 10
|
||||||
|
|
||||||
/* The UNIQUE check is done with a hashed long key */
|
/* The UNIQUE check is done with a hashed long key */
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ SHOW CREATE TABLE T1;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
T1 CREATE TABLE `T1` (
|
T1 CREATE TABLE `T1` (
|
||||||
`a` int(11) default NULL
|
`a` int(11) default NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
RENAME TABLE T1 TO T2;
|
RENAME TABLE T1 TO T2;
|
||||||
SHOW TABLES LIKE "T2";
|
SHOW TABLES LIKE "T2";
|
||||||
Tables_in_test (T2)
|
Tables_in_test (T2)
|
||||||
|
@ -28,6 +28,7 @@ repair table t1 use_frm;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 repair error Table 'test.t1' doesn't exist
|
test.t1 repair error Table 'test.t1' doesn't exist
|
||||||
create table t1 engine=myisam SELECT 1,"table 1";
|
create table t1 engine=myisam SELECT 1,"table 1";
|
||||||
|
flush tables;
|
||||||
repair table t1;
|
repair table t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 repair error Can't open file: 't1.MYI' (errno: 130)
|
test.t1 repair error Can't open file: 't1.MYI' (errno: 130)
|
||||||
|
@ -28,6 +28,7 @@ drop table t1;
|
|||||||
repair table t1 use_frm;
|
repair table t1 use_frm;
|
||||||
|
|
||||||
create table t1 engine=myisam SELECT 1,"table 1";
|
create table t1 engine=myisam SELECT 1,"table 1";
|
||||||
|
flush tables;
|
||||||
system echo 1 > $MYSQL_TEST_DIR/var/master-data/test/t1.MYI ;
|
system echo 1 > $MYSQL_TEST_DIR/var/master-data/test/t1.MYI ;
|
||||||
repair table t1;
|
repair table t1;
|
||||||
repair table t1 use_frm;
|
repair table t1 use_frm;
|
||||||
|
@ -203,7 +203,8 @@ void my_thread_end(void)
|
|||||||
tmp->dbug=0;
|
tmp->dbug=0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if !defined(__bsdi__) || defined(HAVE_mit_thread) /* bsdi dumps core here */
|
#if !defined(__bsdi__) && !defined(__OpenBSD__) || defined(HAVE_mit_thread)
|
||||||
|
/* bsdi and openbsd 3.5 dumps core here */
|
||||||
pthread_cond_destroy(&tmp->suspend);
|
pthread_cond_destroy(&tmp->suspend);
|
||||||
#endif
|
#endif
|
||||||
pthread_mutex_destroy(&tmp->mutex);
|
pthread_mutex_destroy(&tmp->mutex);
|
||||||
|
10
sql/field.cc
10
sql/field.cc
@ -2308,7 +2308,12 @@ int Field_float::store(double nr)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
max_value= (log_10[field_length]-1)/log_10[dec];
|
max_value= (log_10[field_length]-1)/log_10[dec];
|
||||||
nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
|
/*
|
||||||
|
The following comparison is needed to not get an overflow if nr
|
||||||
|
is close to FLT_MAX
|
||||||
|
*/
|
||||||
|
if (fabs(nr) < FLT_MAX/10.0e+32)
|
||||||
|
nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
|
||||||
}
|
}
|
||||||
if (nr < -max_value)
|
if (nr < -max_value)
|
||||||
{
|
{
|
||||||
@ -2603,7 +2608,8 @@ int Field_double::store(double nr)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
max_value= (log_10[field_length]-1)/log_10[dec];
|
max_value= (log_10[field_length]-1)/log_10[dec];
|
||||||
nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
|
if (fabs(nr) < DBL_MAX/10.0e+32)
|
||||||
|
nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
|
||||||
}
|
}
|
||||||
if (nr < -max_value)
|
if (nr < -max_value)
|
||||||
{
|
{
|
||||||
|
@ -868,7 +868,7 @@ void ha_myisam::start_bulk_insert(ha_rows rows)
|
|||||||
ulong size= min(thd->variables.read_buff_size, table->avg_row_length*rows);
|
ulong size= min(thd->variables.read_buff_size, table->avg_row_length*rows);
|
||||||
|
|
||||||
/* don't enable row cache if too few rows */
|
/* don't enable row cache if too few rows */
|
||||||
if (!rows && rows > 10)
|
if (!rows && rows > MI_MIN_ROWS_TO_USE_WRITE_CACHE)
|
||||||
mi_extra(file, HA_EXTRA_WRITE_CACHE, (void*) &size);
|
mi_extra(file, HA_EXTRA_WRITE_CACHE, (void*) &size);
|
||||||
|
|
||||||
can_enable_indexes= (file->s->state.key_map ==
|
can_enable_indexes= (file->s->state.key_map ==
|
||||||
|
@ -107,6 +107,7 @@ MYSQL_LOG::~MYSQL_LOG()
|
|||||||
|
|
||||||
void MYSQL_LOG::cleanup()
|
void MYSQL_LOG::cleanup()
|
||||||
{
|
{
|
||||||
|
DBUG_ENTER("cleanup");
|
||||||
if (inited)
|
if (inited)
|
||||||
{
|
{
|
||||||
inited= 0;
|
inited= 0;
|
||||||
@ -115,6 +116,7 @@ void MYSQL_LOG::cleanup()
|
|||||||
(void) pthread_mutex_destroy(&LOCK_index);
|
(void) pthread_mutex_destroy(&LOCK_index);
|
||||||
(void) pthread_cond_destroy(&update_cond);
|
(void) pthread_cond_destroy(&update_cond);
|
||||||
}
|
}
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -260,7 +260,15 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
thd->proc_info="update";
|
thd->proc_info="update";
|
||||||
if (duplic != DUP_ERROR)
|
if (duplic != DUP_ERROR)
|
||||||
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
|
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
|
||||||
if (lock_type != TL_WRITE_DELAYED && values_list.elements != 1);
|
/*
|
||||||
|
let's *try* to start bulk inserts. It won't necessary
|
||||||
|
start them as values_list.elements should be greater than
|
||||||
|
some - handler dependent - threshold.
|
||||||
|
So we call start_bulk_insert to perform nesessary checks on
|
||||||
|
values_list.elements, and - if nothing else - to initialize
|
||||||
|
the code to make the call of end_bulk_insert() below safe.
|
||||||
|
*/
|
||||||
|
if (lock_type != TL_WRITE_DELAYED)
|
||||||
table->file->start_bulk_insert(values_list.elements);
|
table->file->start_bulk_insert(values_list.elements);
|
||||||
|
|
||||||
while ((values= its++))
|
while ((values= its++))
|
||||||
|
Reference in New Issue
Block a user