mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 07:05:33 +02:00
Merge bk-internal:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1 sql/ha_myisam.cc: Auto merged sql/sql_load.cc: Auto merged sql/table.h: Auto merged
This commit is contained in:
commit
6b433f99a4
12 changed files with 37 additions and 40070 deletions
|
|
@ -817,26 +817,19 @@ int ha_myisam::preload_keys(THD* thd, HA_CHECK_OPT *check_opt)
|
|||
deactivate_non_unique_index()
|
||||
rows Rows to be inserted
|
||||
0 if we don't know
|
||||
HA_POS_ERROR if we want to disable all keys
|
||||
HA_POS_ERROR if we want to force disabling
|
||||
and make it permanent (save on disk)
|
||||
*/
|
||||
|
||||
void ha_myisam::deactivate_non_unique_index(ha_rows rows)
|
||||
{
|
||||
MYISAM_SHARE* share = file->s;
|
||||
bool do_warning=0;
|
||||
if (share->state.key_map == ((ulonglong) 1L << share->base.keys)-1)
|
||||
{
|
||||
if (!(specialflag & SPECIAL_SAFE_MODE))
|
||||
{
|
||||
if (rows == HA_POS_ERROR)
|
||||
{
|
||||
uint orig_update= file->update;
|
||||
file->update ^= HA_STATE_CHANGED;
|
||||
uint check_update= file->update;
|
||||
if (rows == HA_POS_ERROR) // force disable and save it on disk!
|
||||
mi_extra(file, HA_EXTRA_NO_KEYS, 0);
|
||||
do_warning= (file->update == check_update) && file->state->records;
|
||||
file->update= orig_update;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
|
|
@ -846,15 +839,16 @@ void ha_myisam::deactivate_non_unique_index(ha_rows rows)
|
|||
we don't want to update the key statistics based of only a few rows.
|
||||
*/
|
||||
if (file->state->records == 0 &&
|
||||
(!rows || rows >= MI_MIN_ROWS_TO_USE_BULK_INSERT))
|
||||
(!rows || rows >= MI_MIN_ROWS_TO_DISABLE_INDEXES))
|
||||
mi_disable_non_unique_index(file,rows);
|
||||
else
|
||||
if (!file->bulk_insert &&
|
||||
(!rows || rows >= MI_MIN_ROWS_TO_USE_BULK_INSERT))
|
||||
{
|
||||
mi_init_bulk_insert(file,
|
||||
current_thd->variables.bulk_insert_buff_size,
|
||||
rows);
|
||||
table->bulk_insert= 1;
|
||||
}
|
||||
current_thd->variables.bulk_insert_buff_size,
|
||||
rows);
|
||||
}
|
||||
}
|
||||
}
|
||||
enable_activate_all_index=1;
|
||||
|
|
@ -862,10 +856,6 @@ void ha_myisam::deactivate_non_unique_index(ha_rows rows)
|
|||
}
|
||||
else
|
||||
enable_activate_all_index=0;
|
||||
if (do_warning)
|
||||
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||
ER_ILLEGAL_HA,
|
||||
ER(ER_ILLEGAL_HA), table->table_name);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -877,7 +867,6 @@ bool ha_myisam::activate_all_index(THD *thd)
|
|||
DBUG_ENTER("activate_all_index");
|
||||
|
||||
mi_end_bulk_insert(file);
|
||||
table->bulk_insert= 0;
|
||||
if (enable_activate_all_index &&
|
||||
share->state.key_map != set_bits(ulonglong, share->base.keys))
|
||||
{
|
||||
|
|
@ -1392,8 +1381,8 @@ longlong ha_myisam::get_auto_increment()
|
|||
return auto_increment_value;
|
||||
}
|
||||
|
||||
if (table->bulk_insert)
|
||||
mi_flush_bulk_insert(file, table->next_number_index);
|
||||
/* it's safe to call the following if bulk_insert isn't on */
|
||||
mi_flush_bulk_insert(file, table->next_number_index);
|
||||
|
||||
longlong nr;
|
||||
int error;
|
||||
|
|
|
|||
|
|
@ -280,7 +280,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||
table->next_number_field=table->found_next_number_field;
|
||||
VOID(table->file->extra_opt(HA_EXTRA_WRITE_CACHE,
|
||||
thd->variables.read_buff_size));
|
||||
table->bulk_insert= 1;
|
||||
if (handle_duplicates == DUP_IGNORE ||
|
||||
handle_duplicates == DUP_REPLACE)
|
||||
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ struct st_table {
|
|||
my_bool maybe_null,outer_join; /* Used with OUTER JOIN */
|
||||
my_bool force_index;
|
||||
my_bool distinct,const_table,no_rows;
|
||||
my_bool key_read, bulk_insert;
|
||||
my_bool key_read;
|
||||
my_bool crypted;
|
||||
my_bool db_low_byte_first; /* Portable row format */
|
||||
my_bool locked_by_flush;
|
||||
|
|
@ -131,7 +131,7 @@ struct st_table {
|
|||
my_bool is_view;
|
||||
my_bool no_keyread, no_cache;
|
||||
my_bool clear_query_id; /* To reset query_id for tables and cols */
|
||||
my_bool auto_increment_field_not_null;
|
||||
my_bool auto_increment_field_not_null;
|
||||
Field *next_number_field, /* Set if next_number is activated */
|
||||
*found_next_number_field, /* Set on open */
|
||||
*rowid_field;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue