summaryrefslogtreecommitdiff
path: root/sql/ha_myisam.h
diff options
context:
space:
mode:
authorunknown <ingo@mysql.com>2004-05-06 15:53:01 +0200
committerunknown <ingo@mysql.com>2004-05-06 15:53:01 +0200
commitbfe2425aadc92071392cc339229270f563a22216 (patch)
tree7facff5ed1695a7cdb0e0ab674137605074739d9 /sql/ha_myisam.h
parentb30d0883b1e87df5a476a9e48542321de4384aa4 (diff)
downloadmariadb-git-bfe2425aadc92071392cc339229270f563a22216.tar.gz
WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again).
HEAP: Copies the key count to a backup variable and sets the key count to zero. That way, no HEAP function will ever try to touch any index. Re-enabling is done by copying back the backup variable. To avoid memory leak at table close, disable deletes all index trees. Re-enabling must be done with empty indexes and data anyway. Otherwise, the indexes would need to be repaired, wich HEAP is not capable of. MyISAM: Only the key_map is cleared and set. Re-enabling must be done with empty indexes and data. Otherwise, repair needs to be done which will enable all keys persistently. The former implementation disabled only non-unique keys and maked this persistent. The new implementation additionally can disable all keys, but only without making this persistent. Re-enabling all keys can be done without repair, if data file and indexes are empty. heap/heapdef.h: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Pulled hp_clear_keys() out of hp_clear(). heap/hp_clear.c: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Pulled hp_clear_keys() out of hp_clear(). Added the new functions for disabling and enabling keys and to ask for the key state. include/heap.h: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Added a new HP_SHARE element to save the key count while keys are disabled. Added declarations for the new functions. myisam/mi_open.c: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Added the new functions for disabling and enabling keys and to ask for the key state. myisam/myisamdef.h: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Added declarations for the new functions. sql/ha_heap.cc: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Pulled set_keys_for_scanning() out of open(). Added the new functions for disabling and enabling keys and to ask for the key state. sql/ha_heap.h: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Added declarations for the new functions. sql/ha_myisam.cc: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Extended disable_indexes() for all keys and no save. The argument is now 'mode' as it must handle different cases. Extended enable_indexes() for no save. The new feature needs the new argument 'mode' with the same semantics as in disable_indexes(). Added indexes_are_disabled() to ask for the key state. Extended the existing call to enable_indexes() by the new argument. sql/ha_myisam.h: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Modified the declarations of dis-/enable_indexes() for the new argument. Added the declaration of the new function to ask for the key state. sql/handler.h: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Added declarations for the operation modes for the key switching functions. Modified the declarations of dis-/enable_indexes() for the new argument. Added the declaration of the new function to ask for the key state. sql/sql_select.cc: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). In create_myisam_from_heap() take notice of disabled keys and disable them in the new table before copying the data. sql/sql_table.cc: WL#1687 - Optimize UNION DISTINCT ... UNION ALL (again). Modified the calls of dis-/enable_indexes() for the new argument.
Diffstat (limited to 'sql/ha_myisam.h')
-rw-r--r--sql/ha_myisam.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/sql/ha_myisam.h b/sql/ha_myisam.h
index ca318b02778..206a1c62a2f 100644
--- a/sql/ha_myisam.h
+++ b/sql/ha_myisam.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
@@ -105,8 +105,9 @@ class ha_myisam: public handler
int extra_opt(enum ha_extra_function operation, ulong cache_size);
int external_lock(THD *thd, int lock_type);
int delete_all_rows(void);
- int disable_indexes(bool all, bool save);
- int enable_indexes();
+ int disable_indexes(uint mode);
+ int enable_indexes(uint mode);
+ int indexes_are_disabled(void);
void start_bulk_insert(ha_rows rows);
int end_bulk_insert();
ha_rows records_in_range(int inx,