summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authoringo@mysql.com <>2004-05-07 11:13:58 +0200
committeringo@mysql.com <>2004-05-07 11:13:58 +0200
commit5c4f83bbd9387d45636e16a14ae4284166a0e675 (patch)
tree894bc06e8d2d979cd1ce5d96299358c3af896009 /myisam
parentdf8e3eac456b14b420f724e658eee175d2ee5e57 (diff)
parent784c9526ecb1f19216bdbb7a24fd85d71529ad5f (diff)
downloadmariadb-git-5c4f83bbd9387d45636e16a14ae4284166a0e675.tar.gz
Merge mysql.com:/home/mydev/mysql-4.1
into mysql.com:/home/mydev/mysql-4.1-wl1687
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_open.c83
-rw-r--r--myisam/myisamdef.h5
2 files changed, 86 insertions, 2 deletions
diff --git a/myisam/mi_open.c b/myisam/mi_open.c
index 2c4661c4d3e..53cf87b24b4 100644
--- a/myisam/mi_open.c
+++ b/myisam/mi_open.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+/* Copyright (C) 2000,2004 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1151,3 +1151,84 @@ int mi_open_keyfile(MYISAM_SHARE *share)
return 1;
return 0;
}
+
+
+/*
+ Disable all indexes.
+
+ SYNOPSIS
+ mi_disable_indexes()
+ info A pointer to the MyISAM storage engine MI_INFO struct.
+
+ DESCRIPTION
+ Disable all indexes.
+
+ RETURN
+ 0 ok
+*/
+
+int mi_disable_indexes(MI_INFO *info)
+{
+ MYISAM_SHARE *share= info->s;
+
+ share->state.key_map= 0;
+ return 0;
+}
+
+
+/*
+ Enable all indexes
+
+ SYNOPSIS
+ mi_enable_indexes()
+ info A pointer to the MyISAM storage engine MI_INFO struct.
+
+ DESCRIPTION
+ Enable all indexes. The indexes might have been disabled
+ by mi_disable_index() before.
+ The function works only if both data and indexes are empty,
+ otherwise a repair is required.
+ To be sure, call handler::delete_all_rows() before.
+
+ RETURN
+ 0 ok
+ HA_ERR_CRASHED data or index is non-empty.
+*/
+
+int mi_enable_indexes(MI_INFO *info)
+{
+ int error= 0;
+ MYISAM_SHARE *share= info->s;
+
+ if (share->state.state.data_file_length ||
+ (share->state.state.key_file_length != share->base.keystart))
+ error= HA_ERR_CRASHED;
+ else
+ share->state.key_map= ((ulonglong) 1L << share->base.keys) - 1;
+ return error;
+}
+
+
+/*
+ Test if indexes are disabled.
+
+ SYNOPSIS
+ mi_indexes_are_disabled()
+ info A pointer to the MyISAM storage engine MI_INFO struct.
+
+ DESCRIPTION
+ Test if indexes are disabled.
+
+ RETURN
+ 0 indexes are not disabled
+ 1 all indexes are disabled
+ [2 non-unique indexes are disabled - NOT YET IMPLEMENTED]
+*/
+
+int mi_indexes_are_disabled(MI_INFO *info)
+{
+ MYISAM_SHARE *share= info->s;
+
+ return (! share->state.key_map && share->base.keys);
+}
+
diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h
index 0f43fe7fb61..1f100590049 100644
--- a/myisam/myisamdef.h
+++ b/myisam/myisamdef.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+/* Copyright (C) 2000,2004 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -684,6 +684,9 @@ uint mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef);
char *mi_uniquedef_read(char *ptr, MI_UNIQUEDEF *keydef);
uint mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
char *mi_recinfo_read(char *ptr, MI_COLUMNDEF *recinfo);
+extern int mi_disable_indexes(MI_INFO *info);
+extern int mi_enable_indexes(MI_INFO *info);
+extern int mi_indexes_are_disabled(MI_INFO *info);
ulong _my_calc_total_blob_length(MI_INFO *info, const byte *record);
ha_checksum mi_checksum(MI_INFO *info, const byte *buf);
ha_checksum mi_static_checksum(MI_INFO *info, const byte *buf);