summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-04-02 23:50:41 +0200
committerunknown <serg@serg.mylan>2004-04-02 23:50:41 +0200
commit6b433f99a4dd717e3274c26f5727c6aa14663f75 (patch)
tree50c9a9de7e7a6d6ad79986d1c33e9df44a9490b4 /sql
parent8abda715d4d6bf75bb4470c7acc86b9dd224012e (diff)
parentb2cf48ab5aded5cfd14351b1a97a47af0b3615a3 (diff)
downloadmariadb-git-6b433f99a4dd717e3274c26f5727c6aa14663f75.tar.gz
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
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_myisam.cc33
-rw-r--r--sql/sql_load.cc1
-rw-r--r--sql/table.h4
3 files changed, 13 insertions, 25 deletions
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index cc8f84c4b00..6ac3c52fe40 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -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;
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index e3b32f694da..7b7ed2e96d0 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -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);
diff --git a/sql/table.h b/sql/table.h
index 537e31a202a..b595887820a 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -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;