Re: myisamchk buffer_size warnings
am 18.06.2009 13:32:28 von Thomas Spahni
On Tue, 16 Jun 2009, Thomas Spahni wrote:
> Hi
>
> I have MySQL 5.0.64 compiled from source. When I run myisamchk on any
> table I get the following warnings:
>
> Warning: option 'key_buffer_size': unsigned value 18446744073709551615
> adjusted to 4294963200
> Warning: option 'read_buffer_size': unsigned value 18446744073709551615
> adjusted to 4294967295
> Warning: option 'write_buffer_size': unsigned value 18446744073709551615
> adjusted to 4294967295
> Warning: option 'sort_buffer_size': unsigned value 18446744073709551615
> adjusted to 4294967295
>
> /etc/my.cnf contains the following:
>
> [myisamchk]
> key_buffer_size=20971520
> sort_buffer_size=20971520
> read_buffer_size=2097152
> write_buffer_size=2097152
>
> What's wrong here?
> Thomas Spahni
Hi all,
Replying to myself as the problem is fixed in the meantime (at least for
me). It turned out to be bug #33785 described here:
The solution is to fix the source code of myisamchk.c and recompile. The
diff is:
--- myisamchk.c.original 2009-06-18 13:01:55.000000000 +0200
+++ myisamchk.c 2009-06-18 13:17:34.000000000 +0200
@@ -295,7 +295,7 @@
{ "key_buffer_size", OPT_KEY_BUFFER_SIZE, "",
(gptr*) &check_param.use_buffers, (gptr*) &check_param.use_buffers, 0,
GET_ULONG, REQUIRED_ARG, (long) USE_BUFFER_INIT, (long) MALLOC_OVERHEAD,
- (long) ~0L, (long) MALLOC_OVERHEAD, (long) IO_SIZE, 0},
+ (ulong) ~0, (long) MALLOC_OVERHEAD, (long) IO_SIZE, 0},
{ "key_cache_block_size", OPT_KEY_CACHE_BLOCK_SIZE, "",
(gptr*) &opt_key_cache_block_size,
(gptr*) &opt_key_cache_block_size, 0,
@@ -309,17 +309,17 @@
(gptr*) &check_param.read_buffer_length,
(gptr*) &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD,
- (long) ~0L, (long) MALLOC_OVERHEAD, (long) 1L, 0},
+ (ulong) ~0, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "write_buffer_size", OPT_WRITE_BUFFER_SIZE, "",
(gptr*) &check_param.write_buffer_length,
(gptr*) &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD,
- (long) ~0L, (long) MALLOC_OVERHEAD, (long) 1L, 0},
+ (ulong) ~0, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "sort_buffer_size", OPT_SORT_BUFFER_SIZE, "",
(gptr*) &check_param.sort_buffer_length,
(gptr*) &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) SORT_BUFFER_INIT, (long) (MIN_SORT_BUFFER + MALLOC_OVERHEAD),
- (long) ~0L, (long) MALLOC_OVERHEAD, (long) 1L, 0},
+ (ulong) ~0, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "sort_key_blocks", OPT_SORT_KEY_BLOCKS, "",
(gptr*) &check_param.sort_key_blocks,
(gptr*) &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG,
Unfortunately MySQL 5.0.64 is packed with SuSE-11.1 and thus a lot of
installations will be broken. Some evil things may happen when you have
less physical memory than the maximum default values as applied by the
broken code.
Thomas
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=gcdmg-mysql-2@m.gmane.org