forked from mysql/mysql-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to…
… 5.1 - Reserver namespace and place in frm for TABLE_CHECKSUM and PAGE_CHECKSUM create options - Added syncing of directory when creating .frm files - Portability fixes - Added missing cast that could cause bugs - Code cleanups - Made some bit functions inline - Moved things out of myisam.h to my_handler.h to make them more accessable - Renamed some myisam variables and defines to make them more globaly usable (as they are used outside of MyISAM) - Fixed bugs in error conditions - Use compiler time asserts instead of run time - Fixed indentation HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP as the old name was wrong (Added a define for old value to ensure we don't break any old code) Added HA_EXTRA_PREPARE_FOR_RENAME as a signal for rename (before we used a DROP signal which is wrong) - Initialize error messages early to get better errors when mysqld or an engine fails to start - Fix windows bug that query_performance_frequency was not initialized if registry code failed - thread_stack -> my_thread_stack_size
- Loading branch information
1 parent
9473b90
commit 7887bab
Showing
78 changed files
with
844 additions
and
386 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
/* | ||
Some useful bit functions | ||
*/ | ||
|
||
#ifdef HAVE_INLINE | ||
|
||
extern const char _my_bits_nbits[256]; | ||
extern const uchar _my_bits_reverse_table[256]; | ||
|
||
/* | ||
Find smallest X in 2^X >= value | ||
This can be used to divide a number with value by doing a shift instead | ||
*/ | ||
|
||
STATIC_INLINE uint my_bit_log2(ulong value) | ||
{ | ||
uint bit; | ||
for (bit=0 ; value > 1 ; value>>=1, bit++) ; | ||
return bit; | ||
} | ||
|
||
STATIC_INLINE uint my_count_bits(ulonglong v) | ||
{ | ||
#if SIZEOF_LONG_LONG > 4 | ||
/* The following code is a bit faster on 16 bit machines than if we would | ||
only shift v */ | ||
ulong v2=(ulong) (v >> 32); | ||
return (uint) (uchar) (_my_bits_nbits[(uchar) v] + | ||
_my_bits_nbits[(uchar) (v >> 8)] + | ||
_my_bits_nbits[(uchar) (v >> 16)] + | ||
_my_bits_nbits[(uchar) (v >> 24)] + | ||
_my_bits_nbits[(uchar) (v2)] + | ||
_my_bits_nbits[(uchar) (v2 >> 8)] + | ||
_my_bits_nbits[(uchar) (v2 >> 16)] + | ||
_my_bits_nbits[(uchar) (v2 >> 24)]); | ||
#else | ||
return (uint) (uchar) (_my_bits_nbits[(uchar) v] + | ||
_my_bits_nbits[(uchar) (v >> 8)] + | ||
_my_bits_nbits[(uchar) (v >> 16)] + | ||
_my_bits_nbits[(uchar) (v >> 24)]); | ||
#endif | ||
} | ||
|
||
STATIC_INLINE uint my_count_bits_ushort(ushort v) | ||
{ | ||
return _my_bits_nbits[v]; | ||
} | ||
|
||
|
||
/* | ||
Next highest power of two | ||
SYNOPSIS | ||
my_round_up_to_next_power() | ||
v Value to check | ||
RETURN | ||
Next or equal power of 2 | ||
Note: 0 will return 0 | ||
NOTES | ||
Algorithm by Sean Anderson, according to: | ||
http://graphics.stanford.edu/~seander/bithacks.html | ||
(Orignal code public domain) | ||
Comments shows how this works with 01100000000000000000000000001011 | ||
*/ | ||
|
||
STATIC_INLINE uint32 my_round_up_to_next_power(uint32 v) | ||
{ | ||
v--; /* 01100000000000000000000000001010 */ | ||
v|= v >> 1; /* 01110000000000000000000000001111 */ | ||
v|= v >> 2; /* 01111100000000000000000000001111 */ | ||
v|= v >> 4; /* 01111111110000000000000000001111 */ | ||
v|= v >> 8; /* 01111111111111111100000000001111 */ | ||
v|= v >> 16; /* 01111111111111111111111111111111 */ | ||
return v+1; /* 10000000000000000000000000000000 */ | ||
} | ||
|
||
STATIC_INLINE uint32 my_clear_highest_bit(uint32 v) | ||
{ | ||
uint32 w=v >> 1; | ||
w|= w >> 1; | ||
w|= w >> 2; | ||
w|= w >> 4; | ||
w|= w >> 8; | ||
w|= w >> 16; | ||
return v & w; | ||
} | ||
|
||
STATIC_INLINE uint32 my_reverse_bits(uint32 key) | ||
{ | ||
return | ||
(_my_bits_reverse_table[ key & 255] << 24) | | ||
(_my_bits_reverse_table[(key>> 8) & 255] << 16) | | ||
(_my_bits_reverse_table[(key>>16) & 255] << 8) | | ||
_my_bits_reverse_table[(key>>24) ]; | ||
} | ||
|
||
#else | ||
extern uint my_bit_log2(ulong value); | ||
extern uint32 my_round_up_to_next_power(uint32 v); | ||
uint32 my_clear_highest_bit(uint32 v); | ||
uint32 my_reverse_bits(uint32 key); | ||
extern uint my_count_bits(ulonglong v); | ||
extern uint my_count_bits_ushort(ushort v); | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.