summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-04-02 20:42:35 +0200
committerunknown <serg@serg.mylan>2004-04-02 20:42:35 +0200
commita66fe8dcd5e7106df8e6ce01b1c2fc10c3990b2c (patch)
treedfc8d7c560515b2d009e6d8800028290852daaba /myisam
parent7c27065c3e79ad2e39fa71ead9121296008faf10 (diff)
downloadmariadb-git-a66fe8dcd5e7106df8e6ce01b1c2fc10c3990b2c.tar.gz
cleanup of ha_myisam::deactivate_non_unique_index() and Co.
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_check.c20
-rw-r--r--myisam/mi_write.c4
-rw-r--r--myisam/myisamdef.h1
3 files changed, 13 insertions, 12 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index 433724a21e6..d25ffeedff0 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -3966,18 +3966,18 @@ static my_bool mi_too_big_key_for_sort(MI_KEYDEF *key, ha_rows rows)
void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows)
{
MYISAM_SHARE *share=info->s;
- uint i;
- if (!info->state->records) /* Don't do this if old rows */
+ MI_KEYDEF *key=share->keyinfo;
+ uint i;
+
+ DBUG_ASSERT(info->state->records == 0 &&
+ (!rows || rows >= MI_MIN_ROWS_TO_DISABLE_INDEXES));
+ for (i=0 ; i < share->base.keys ; i++,key++)
{
- MI_KEYDEF *key=share->keyinfo;
- for (i=0 ; i < share->base.keys ; i++,key++)
+ if (!(key->flag & (HA_NOSAME | HA_SPATIAL | HA_AUTO_KEY)) &&
+ ! mi_too_big_key_for_sort(key,rows) && info->s->base.auto_key != i+1)
{
- if (!(key->flag & (HA_NOSAME | HA_SPATIAL | HA_AUTO_KEY)) &&
- ! mi_too_big_key_for_sort(key,rows) && info->s->base.auto_key != i+1)
- {
- share->state.key_map&= ~ ((ulonglong) 1 << i);
- info->update|= HA_STATE_CHANGED;
- }
+ share->state.key_map&= ~ ((ulonglong) 1 << i);
+ info->update|= HA_STATE_CHANGED;
}
}
}
diff --git a/myisam/mi_write.c b/myisam/mi_write.c
index 382fb1156cb..59819b40f96 100644
--- a/myisam/mi_write.c
+++ b/myisam/mi_write.c
@@ -916,8 +916,8 @@ int mi_init_bulk_insert(MI_INFO *info, ulong cache_size, ha_rows rows)
DBUG_ENTER("_mi_init_bulk_insert");
DBUG_PRINT("enter",("cache_size: %lu", cache_size));
- if (info->bulk_insert || (rows && rows < MI_MIN_ROWS_TO_USE_BULK_INSERT))
- DBUG_RETURN(0);
+ DBUG_ASSERT(!info->bulk_insert &&
+ (!rows || rows >= MI_MIN_ROWS_TO_USE_BULK_INSERT));
for (i=total_keylength=num_keys=0 ; i < share->base.keys ; i++)
{
diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h
index f84d1c573d0..ecef9953202 100644
--- a/myisam/myisamdef.h
+++ b/myisam/myisamdef.h
@@ -416,6 +416,7 @@ typedef struct st_mi_sort_param
#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_DISABLE_INDEXES 100
/* The UNIQUE check is done with a hashed long key */