Commit bb181d25 authored by Bjorn Munch's avatar Bjorn Munch

new merge from trunk

parents 4a75d269 18f7dd0f
...@@ -137,6 +137,7 @@ ENDIF(MSVC) ...@@ -137,6 +137,7 @@ ENDIF(MSVC)
IF(WIN32) IF(WIN32)
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE") ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
ENDIF(WIN32) ENDIF(WIN32)
# default to x86 platform. We'll check for X64 in a bit # default to x86 platform. We'll check for X64 in a bit
......
...@@ -81,8 +81,13 @@ rl_alphabetic (c) ...@@ -81,8 +81,13 @@ rl_alphabetic (c)
#if defined (HANDLE_MULTIBYTE) #if defined (HANDLE_MULTIBYTE)
int int
_rl_walphabetic (wc) /*
wchar_t wc; Portability issue with VisualAge C++ Professional / C for AIX Compiler, Version 6:
"util.c", line 84.1: 1506-343 (S) Redeclaration of _rl_walphabetic differs
from previous declaration on line 110 of "rlmbutil.h".
So, put type in the function signature here.
*/
_rl_walphabetic (wchar_t wc)
{ {
int c; int c;
......
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
## Process this file with automake to create Makefile.in ## Process this file with automake to create Makefile.in
testdir = $(prefix)/mysql-test testroot = $(prefix)
testdir = $(testroot)/mysql-test
test_SCRIPTS = mtr \ test_SCRIPTS = mtr \
mysql-test-run \ mysql-test-run \
......
funcs_1.charset_collation_1 # depends on compile-time decisions funcs_1.charset_collation_1 # depends on compile-time decisions
binlog.binlog_tmp_table* # Bug#45578: Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2' binlog.binlog_tmp_table* # Bug#45578: Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
innodb.innodb_information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
main.ctype_gbk_binlog # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
main.information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
rpl.rpl_row_create_table* # Bug#45576: rpl_row_create_table fails on PB2 rpl.rpl_row_create_table* # Bug#45576: rpl_row_create_table fails on PB2
rpl_ndb.rpl_ndb_log # Bug#38998 rpl_ndb.rpl_ndb_log # Bug#38998
rpl.rpl_innodb_bug28430* @solaris # Bug#46029 rpl.rpl_innodb_bug28430* @solaris # Bug#46029
main.plugin_load @solaris # Bug#42144 main.plugin_load @solaris # Bug#47146
rpl.rpl_get_master_version_and_clock* # Bug#46931 2009-08-26 alik rpl.rpl_get_master_version_and_clock fails on hpux11.31 rpl.rpl_get_master_version_and_clock* # Bug#46931 2009-08-26 alik rpl.rpl_get_master_version_and_clock fails on hpux11.31
main.plugin* @solaris # Bug#47146 Linking problem with example plugin when dtrace enabled main.plugin* @solaris # Bug#47146 Linking problem with example plugin when dtrace enabled
rpl.rpl_plugin_load* @solaris # Bug#47146 rpl.rpl_plugin_load* @solaris # Bug#47146
ndb.n* # Consider all NDB tests experimental.
rpl_ndb.r* # Consider all NDB tests experimental.
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
safedir = $(prefix)/mysql-test/lib/My/SafeProcess testroot = $(prefix)
safedir = $(testroot)/mysql-test/lib/My/SafeProcess
#nobase_bin_PROGRAMS = ... #nobase_bin_PROGRAMS = ...
safe_PROGRAMS = my_safe_process safe_PROGRAMS = my_safe_process
......
...@@ -180,8 +180,6 @@ NULL mysqltest_db1 trg5 DELETE NULL mysqltest_db1 t1 0 NULL SET @a = 5 ROW BEFOR ...@@ -180,8 +180,6 @@ NULL mysqltest_db1 trg5 DELETE NULL mysqltest_db1 t1 0 NULL SET @a = 5 ROW BEFOR
DROP USER mysqltest_dfn@localhost; DROP USER mysqltest_dfn@localhost;
DROP USER mysqltest_inv@localhost; DROP USER mysqltest_inv@localhost;
DROP DATABASE mysqltest_db1; DROP DATABASE mysqltest_db1;
Warnings:
Warning 1454 No definer attribute for trigger 'mysqltest_db1'.'trg1'. The trigger will be activated under the authorization of the invoker, which may have insufficient privileges. Please recreate the trigger.
DELETE FROM mysql.user WHERE User LIKE 'mysqltest_%'; DELETE FROM mysql.user WHERE User LIKE 'mysqltest_%';
DELETE FROM mysql.db WHERE User LIKE 'mysqltest_%'; DELETE FROM mysql.db WHERE User LIKE 'mysqltest_%';
DELETE FROM mysql.tables_priv WHERE User LIKE 'mysqltest_%'; DELETE FROM mysql.tables_priv WHERE User LIKE 'mysqltest_%';
......
...@@ -12,11 +12,11 @@ let $MYSQLD_DATADIR= `select @@datadir`; ...@@ -12,11 +12,11 @@ let $MYSQLD_DATADIR= `select @@datadir`;
drop table if exists t1; drop table if exists t1;
create table t1 (a int) engine=myisam; create table t1 (a int) engine=myisam;
--remove_file $MYSQLD_DATADIR/test/t1.MYI --remove_file $MYSQLD_DATADIR/test/t1.MYI
--error 1051,6 --error ER_BAD_TABLE_ERROR,6
drop table t1; drop table t1;
create table t1 (a int) engine=myisam; create table t1 (a int) engine=myisam;
--remove_file $MYSQLD_DATADIR/test/t1.MYD --remove_file $MYSQLD_DATADIR/test/t1.MYD
--error 1105,6,29 --error ER_BAD_TABLE_ERROR,6,29
drop table t1; drop table t1;
--error 1051 --error ER_BAD_TABLE_ERROR
drop table t1; drop table t1;
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* /**
@file
These functions handle keyblock cacheing for ISAM and MyISAM tables. These functions handle keyblock cacheing for ISAM and MyISAM tables.
One cache can handle many files. One cache can handle many files.
...@@ -36,7 +37,9 @@ ...@@ -36,7 +37,9 @@
blocks_unused is the sum of never used blocks in the pool and of currently blocks_unused is the sum of never used blocks in the pool and of currently
free blocks. blocks_used is the number of blocks fetched from the pool and free blocks. blocks_used is the number of blocks fetched from the pool and
as such gives the maximum number of in-use blocks at any time. as such gives the maximum number of in-use blocks at any time.
*/
/*
Key Cache Locking Key Cache Locking
================= =================
...@@ -761,6 +764,13 @@ void end_key_cache(KEY_CACHE *keycache, my_bool cleanup) ...@@ -761,6 +764,13 @@ void end_key_cache(KEY_CACHE *keycache, my_bool cleanup)
(ulong) keycache->global_cache_r_requests, (ulong) keycache->global_cache_r_requests,
(ulong) keycache->global_cache_read)); (ulong) keycache->global_cache_read));
/*
Reset these values to be able to detect a disabled key cache.
See Bug#44068 (RESTORE can disable the MyISAM Key Cache).
*/
keycache->blocks_used= 0;
keycache->blocks_unused= 0;
if (cleanup) if (cleanup)
{ {
pthread_mutex_destroy(&keycache->cache_lock); pthread_mutex_destroy(&keycache->cache_lock);
...@@ -1344,7 +1354,11 @@ static void unreg_request(KEY_CACHE *keycache, ...@@ -1344,7 +1354,11 @@ static void unreg_request(KEY_CACHE *keycache,
DBUG_ASSERT(block->prev_changed && *block->prev_changed == block); DBUG_ASSERT(block->prev_changed && *block->prev_changed == block);
DBUG_ASSERT(!block->next_used); DBUG_ASSERT(!block->next_used);
DBUG_ASSERT(!block->prev_used); DBUG_ASSERT(!block->prev_used);
if (! --block->requests) /*
Unregister the request, but do not link erroneous blocks into the
LRU ring.
*/
if (!--block->requests && !(block->status & BLOCK_ERROR))
{ {
my_bool hot; my_bool hot;
if (block->hits_left) if (block->hits_left)
...@@ -1426,8 +1440,7 @@ static void wait_for_readers(KEY_CACHE *keycache, ...@@ -1426,8 +1440,7 @@ static void wait_for_readers(KEY_CACHE *keycache,
#ifdef THREAD #ifdef THREAD
struct st_my_thread_var *thread= my_thread_var; struct st_my_thread_var *thread= my_thread_var;
DBUG_ASSERT(block->status & (BLOCK_READ | BLOCK_IN_USE)); DBUG_ASSERT(block->status & (BLOCK_READ | BLOCK_IN_USE));
DBUG_ASSERT(!(block->status & (BLOCK_ERROR | BLOCK_IN_FLUSH | DBUG_ASSERT(!(block->status & (BLOCK_IN_FLUSH | BLOCK_CHANGED)));
BLOCK_CHANGED)));
DBUG_ASSERT(block->hash_link); DBUG_ASSERT(block->hash_link);
DBUG_ASSERT(block->hash_link->block == block); DBUG_ASSERT(block->hash_link->block == block);
/* Linked in file_blocks or changed_blocks hash. */ /* Linked in file_blocks or changed_blocks hash. */
...@@ -2211,9 +2224,9 @@ static BLOCK_LINK *find_key_block(KEY_CACHE *keycache, ...@@ -2211,9 +2224,9 @@ static BLOCK_LINK *find_key_block(KEY_CACHE *keycache,
thread might change the block->hash_link value thread might change the block->hash_link value
*/ */
error= my_pwrite(block->hash_link->file, error= my_pwrite(block->hash_link->file,
block->buffer+block->offset, block->buffer + block->offset,
block->length - block->offset, block->length - block->offset,
block->hash_link->diskpos+ block->offset, block->hash_link->diskpos + block->offset,
MYF(MY_NABP | MY_WAIT_IF_FULL)); MYF(MY_NABP | MY_WAIT_IF_FULL));
keycache_pthread_mutex_lock(&keycache->cache_lock); keycache_pthread_mutex_lock(&keycache->cache_lock);
...@@ -2537,7 +2550,6 @@ uchar *key_cache_read(KEY_CACHE *keycache, ...@@ -2537,7 +2550,6 @@ uchar *key_cache_read(KEY_CACHE *keycache,
reg1 BLOCK_LINK *block; reg1 BLOCK_LINK *block;
uint read_length; uint read_length;
uint offset; uint offset;
uint status;
int page_st; int page_st;
if (MYSQL_KEYCACHE_READ_START_ENABLED()) if (MYSQL_KEYCACHE_READ_START_ENABLED())
...@@ -2581,9 +2593,11 @@ uchar *key_cache_read(KEY_CACHE *keycache, ...@@ -2581,9 +2593,11 @@ uchar *key_cache_read(KEY_CACHE *keycache,
do do
{ {
/* Cache could be disabled in a later iteration. */ /* Cache could be disabled in a later iteration. */
if (!keycache->can_be_used) if (!keycache->can_be_used)
{
KEYCACHE_DBUG_PRINT("key_cache_read", ("keycache cannot be used"));
goto no_key_cache; goto no_key_cache;
}
/* Start reading at the beginning of the cache block. */ /* Start reading at the beginning of the cache block. */
filepos-= offset; filepos-= offset;
/* Do not read beyond the end of the cache block. */ /* Do not read beyond the end of the cache block. */
...@@ -2652,7 +2666,7 @@ uchar *key_cache_read(KEY_CACHE *keycache, ...@@ -2652,7 +2666,7 @@ uchar *key_cache_read(KEY_CACHE *keycache,
} }
/* block status may have added BLOCK_ERROR in the above 'if'. */ /* block status may have added BLOCK_ERROR in the above 'if'. */
if (!((status= block->status) & BLOCK_ERROR)) if (!(block->status & BLOCK_ERROR))
{ {
#ifndef THREAD #ifndef THREAD
if (! return_buffer) if (! return_buffer)
...@@ -2678,14 +2692,22 @@ uchar *key_cache_read(KEY_CACHE *keycache, ...@@ -2678,14 +2692,22 @@ uchar *key_cache_read(KEY_CACHE *keycache,
remove_reader(block); remove_reader(block);
/* Error injection for coverage testing. */
DBUG_EXECUTE_IF("key_cache_read_block_error",
block->status|= BLOCK_ERROR;);
/* Do not link erroneous blocks into the LRU ring, but free them. */
if (!(block->status & BLOCK_ERROR))
{
/* /*
Link the block into the LRU ring if it's the last submitted Link the block into the LRU ring if it's the last submitted
request for the block. This enables eviction for the block. request for the block. This enables eviction for the block.
*/ */
unreg_request(keycache, block, 1); unreg_request(keycache, block, 1);
}
if (status & BLOCK_ERROR) else
{ {
free_block(keycache, block);
error= 1; error= 1;
break; break;
} }
...@@ -2719,6 +2741,7 @@ uchar *key_cache_read(KEY_CACHE *keycache, ...@@ -2719,6 +2741,7 @@ uchar *key_cache_read(KEY_CACHE *keycache,
} }
goto end; goto end;
} }
KEYCACHE_DBUG_PRINT("key_cache_read", ("keycache not initialized"));
no_key_cache: no_key_cache:
/* Key cache is not used */ /* Key cache is not used */
...@@ -2739,6 +2762,7 @@ uchar *key_cache_read(KEY_CACHE *keycache, ...@@ -2739,6 +2762,7 @@ uchar *key_cache_read(KEY_CACHE *keycache,
dec_counter_for_resize_op(keycache); dec_counter_for_resize_op(keycache);
keycache_pthread_mutex_unlock(&keycache->cache_lock); keycache_pthread_mutex_unlock(&keycache->cache_lock);
} }
DBUG_PRINT("exit", ("error: %d", error ));
DBUG_RETURN(error ? (uchar*) 0 : start); DBUG_RETURN(error ? (uchar*) 0 : start);
} }
...@@ -2947,19 +2971,27 @@ int key_cache_insert(KEY_CACHE *keycache, ...@@ -2947,19 +2971,27 @@ int key_cache_insert(KEY_CACHE *keycache,
DBUG_ASSERT(block->status & (BLOCK_READ | BLOCK_IN_USE)); DBUG_ASSERT(block->status & (BLOCK_READ | BLOCK_IN_USE));
} /* end of if (!(block->status & BLOCK_ERROR)) */ } /* end of if (!(block->status & BLOCK_ERROR)) */
remove_reader(block); remove_reader(block);
/* Error injection for coverage testing. */
DBUG_EXECUTE_IF("key_cache_insert_block_error",
block->status|= BLOCK_ERROR; errno=EIO;);
/* Do not link erroneous blocks into the LRU ring, but free them. */
if (!(block->status & BLOCK_ERROR))
{
/* /*
Link the block into the LRU ring if it's the last submitted Link the block into the LRU ring if it's the last submitted
request for the block. This enables eviction for the block. request for the block. This enables eviction for the block.
*/ */
unreg_request(keycache, block, 1); unreg_request(keycache, block, 1);
}
error= (block->status & BLOCK_ERROR); else
{
if (error) free_block(keycache, block);
error= 1;
break; break;
}
buff+= read_length; buff+= read_length;
filepos+= read_length+offset; filepos+= read_length+offset;
...@@ -3251,14 +3283,24 @@ int key_cache_write(KEY_CACHE *keycache, ...@@ -3251,14 +3283,24 @@ int key_cache_write(KEY_CACHE *keycache,
*/ */
remove_reader(block); remove_reader(block);
/* Error injection for coverage testing. */
DBUG_EXECUTE_IF("key_cache_write_block_error",
block->status|= BLOCK_ERROR;);
/* Do not link erroneous blocks into the LRU ring, but free them. */
if (!(block->status & BLOCK_ERROR))
{
/* /*
Link the block into the LRU ring if it's the last submitted Link the block into the LRU ring if it's the last submitted
request for the block. This enables eviction for the block. request for the block. This enables eviction for the block.
*/ */
unreg_request(keycache, block, 1); unreg_request(keycache, block, 1);
}
if (block->status & BLOCK_ERROR) else
{ {
/* Pretend a "clean" block to avoid complications. */
block->status&= ~(BLOCK_CHANGED);
free_block(keycache, block);
error= 1; error= 1;
break; break;
} }
...@@ -3342,8 +3384,9 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block) ...@@ -3342,8 +3384,9 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block)
{ {
KEYCACHE_THREAD_TRACE("free block"); KEYCACHE_THREAD_TRACE("free block");
KEYCACHE_DBUG_PRINT("free_block", KEYCACHE_DBUG_PRINT("free_block",
("block %u to be freed, hash_link %p", ("block %u to be freed, hash_link %p status: %u",
BLOCK_NUMBER(block), block->hash_link)); BLOCK_NUMBER(block), block->hash_link,
block->status));
/* /*
Assert that the block is not free already. And that it is in a clean Assert that the block is not free already. And that it is in a clean
state. Note that the block might just be assigned to a hash_link and state. Note that the block might just be assigned to a hash_link and
...@@ -3425,10 +3468,14 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block) ...@@ -3425,10 +3468,14 @@ static void free_block(KEY_CACHE *keycache, BLOCK_LINK *block)
if (block->status & BLOCK_IN_EVICTION) if (block->status & BLOCK_IN_EVICTION)
return; return;
/* Error blocks are not put into the LRU ring. */
if (!(block->status & BLOCK_ERROR))
{
/* Here the block must be in the LRU ring. Unlink it again. */ /* Here the block must be in the LRU ring. Unlink it again. */
DBUG_ASSERT(block->next_used && block->prev_used && DBUG_ASSERT(block->next_used && block->prev_used &&
*block->prev_used == block); *block->prev_used == block);
unlink_block(keycache, block); unlink_block(keycache, block);
}
if (block->temperature == BLOCK_WARM) if (block->temperature == BLOCK_WARM)
keycache->warm_blocks--; keycache->warm_blocks--;
block->temperature= BLOCK_COLD; block->temperature= BLOCK_COLD;
...@@ -3517,8 +3564,7 @@ static int flush_cached_blocks(KEY_CACHE *keycache, ...@@ -3517,8 +3564,7 @@ static int flush_cached_blocks(KEY_CACHE *keycache,
(BLOCK_READ | BLOCK_IN_FLUSH | BLOCK_CHANGED | BLOCK_IN_USE)); (BLOCK_READ | BLOCK_IN_FLUSH | BLOCK_CHANGED | BLOCK_IN_USE));
block->status|= BLOCK_IN_FLUSHWRITE; block->status|= BLOCK_IN_FLUSHWRITE;
keycache_pthread_mutex_unlock(&keycache->cache_lock); keycache_pthread_mutex_unlock(&keycache->cache_lock);
error= my_pwrite(file, error= my_pwrite(file, block->buffer+block->offset,
block->buffer+block->offset,
block->length - block->offset, block->length - block->offset,
block->hash_link->diskpos+ block->offset, block->hash_link->diskpos+ block->offset,
MYF(MY_NABP | MY_WAIT_IF_FULL)); MYF(MY_NABP | MY_WAIT_IF_FULL));
...@@ -3545,7 +3591,6 @@ static int flush_cached_blocks(KEY_CACHE *keycache, ...@@ -3545,7 +3591,6 @@ static int flush_cached_blocks(KEY_CACHE *keycache,
right queue anyway. right queue anyway.
*/ */
link_to_file_list(keycache, block, file, 1); link_to_file_list(keycache, block, file, 1);
} }
block->status&= ~BLOCK_IN_FLUSH; block->status&= ~BLOCK_IN_FLUSH;
/* /*
...@@ -3581,7 +3626,7 @@ static int flush_cached_blocks(KEY_CACHE *keycache, ...@@ -3581,7 +3626,7 @@ static int flush_cached_blocks(KEY_CACHE *keycache,
/* /*
flush all key blocks for a file to disk, but don't do any mutex locks. Flush all key blocks for a file to disk, but don't do any mutex locks.
SYNOPSIS SYNOPSIS
flush_key_blocks_int() flush_key_blocks_int()
...@@ -3746,7 +3791,6 @@ static int flush_key_blocks_int(KEY_CACHE *keycache, ...@@ -3746,7 +3791,6 @@ static int flush_key_blocks_int(KEY_CACHE *keycache,
{ {
/* It's a temporary file */ /* It's a temporary file */
DBUG_ASSERT(!(block->status & BLOCK_REASSIGNED)); DBUG_ASSERT(!(block->status & BLOCK_REASSIGNED));
/* /*
free_block() must not be called with BLOCK_CHANGED. Note free_block() must not be called with BLOCK_CHANGED. Note
that we must not change the BLOCK_CHANGED flag outside of that we must not change the BLOCK_CHANGED flag outside of
...@@ -4457,8 +4501,8 @@ static void keycache_debug_print(const char * fmt,...) ...@@ -4457,8 +4501,8 @@ static void keycache_debug_print(const char * fmt,...)
va_start(args,fmt); va_start(args,fmt);
if (keycache_debug_log) if (keycache_debug_log)
{ {
VOID(vfprintf(keycache_debug_log, fmt, args)); (void) vfprintf(keycache_debug_log, fmt, args);
VOID(fputc('\n',keycache_debug_log)); (void) fputc('\n',keycache_debug_log);
} }
va_end(args); va_end(args);
} }
......
...@@ -277,6 +277,7 @@ cp include/mysql/plugin.h $DESTDIR/include/mysql/ ...@@ -277,6 +277,7 @@ cp include/mysql/plugin.h $DESTDIR/include/mysql/
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
mkdir -p $DESTDIR/lib/opt mkdir -p $DESTDIR/lib/opt
mkdir -p $DESTDIR/lib/plugin
cp libmysql/$TARGET/libmysql.dll \ cp libmysql/$TARGET/libmysql.dll \
libmysql/$TARGET/libmysql.lib \ libmysql/$TARGET/libmysql.lib \
libmysql/$TARGET/mysqlclient.lib \ libmysql/$TARGET/mysqlclient.lib \
...@@ -284,6 +285,10 @@ cp libmysql/$TARGET/libmysql.dll \ ...@@ -284,6 +285,10 @@ cp libmysql/$TARGET/libmysql.dll \
regex/$TARGET/regex.lib \ regex/$TARGET/regex.lib \
strings/$TARGET/strings.lib \ strings/$TARGET/strings.lib \
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/ zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
if [ -d storage/innodb_plugin ]; then
cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.dll \
$DESTDIR/lib/plugin/
fi
if [ x"$TARGET" != x"release" ] ; then if [ x"$TARGET" != x"release" ] ; then
cp libmysql/$TARGET/libmysql.pdb \ cp libmysql/$TARGET/libmysql.pdb \
...@@ -292,11 +297,17 @@ if [ x"$TARGET" != x"release" ] ; then ...@@ -292,11 +297,17 @@ if [ x"$TARGET" != x"release" ] ; then
regex/$TARGET/regex.pdb \ regex/$TARGET/regex.pdb \
strings/$TARGET/strings.pdb \ strings/$TARGET/strings.pdb \
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/ zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
if [ -d storage/innodb_plugin ]; then
cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.pdb \
$DESTDIR/lib/plugin/
fi
fi fi
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \ if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
x"$PACK_DEBUG" = x"yes" ] ; then x"$PACK_DEBUG" = x"yes" ] ; then
mkdir -p $DESTDIR/lib/debug mkdir -p $DESTDIR/lib/debug
mkdir -p $DESTDIR/lib/plugin/debug
cp libmysql/debug/libmysql.dll \ cp libmysql/debug/libmysql.dll \
libmysql/debug/libmysql.lib \ libmysql/debug/libmysql.lib \
libmysql/debug/libmysql.pdb \ libmysql/debug/libmysql.pdb \
...@@ -310,6 +321,12 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \ ...@@ -310,6 +321,12 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
strings/debug/strings.pdb \ strings/debug/strings.pdb \
zlib/debug/zlib.lib \ zlib/debug/zlib.lib \
zlib/debug/zlib.pdb $DESTDIR/lib/debug/ zlib/debug/zlib.pdb $DESTDIR/lib/debug/
if [ -d storage/innodb_plugin ]; then
cp storage/innodb_plugin/debug/ha_innodb_plugin.dll \
storage/innodb_plugin/debug/ha_innodb_plugin.lib \
storage/innodb_plugin/debug/ha_innodb_plugin.pdb \
$DESTDIR/lib/plugin/debug/
fi
fi fi
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
......
...@@ -907,6 +907,9 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) ...@@ -907,6 +907,9 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
remove_db_from_cache(db); remove_db_from_cache(db);
pthread_mutex_unlock(&LOCK_open); pthread_mutex_unlock(&LOCK_open);
Drop_table_error_handler err_handler(thd->get_internal_handler());
thd->push_internal_handler(&err_handler);
error= -1; error= -1;
/* /*
We temporarily disable the binary log while dropping the objects We temporarily disable the binary log while dropping the objects
...@@ -939,6 +942,7 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) ...@@ -939,6 +942,7 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
error = 0; error = 0;
reenable_binlog(thd); reenable_binlog(thd);
} }
thd->pop_internal_handler();
} }
if (!silent && deleted>=0) if (!silent && deleted>=0)
{ {
......
...@@ -9831,12 +9831,12 @@ static MYSQL_SYSVAR_LONG(additional_mem_pool_size, innobase_additional_mem_pool_ ...@@ -9831,12 +9831,12 @@ static MYSQL_SYSVAR_LONG(additional_mem_pool_size, innobase_additional_mem_pool_
static MYSQL_SYSVAR_ULONG(autoextend_increment, srv_auto_extend_increment, static MYSQL_SYSVAR_ULONG(autoextend_increment, srv_auto_extend_increment,
PLUGIN_VAR_RQCMDARG, PLUGIN_VAR_RQCMDARG,
"Data file autoextend increment in megabytes", "Data file autoextend increment in megabytes",
NULL, NULL, 64L, 1L, 1000L, 0); NULL, NULL, 8L, 1L, 1000L, 0);
static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size, static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"The size of the memory buffer InnoDB uses to cache data and indexes of its tables.", "The size of the memory buffer InnoDB uses to cache data and indexes of its tables.",
NULL, NULL, 1024*1024*1024L, 5*1024*1024L, LONGLONG_MAX, 1024*1024L); NULL, NULL, 128*1024*1024L, 5*1024*1024L, LONGLONG_MAX, 1024*1024L);
static MYSQL_SYSVAR_ULONG(commit_concurrency, innobase_commit_concurrency, static MYSQL_SYSVAR_ULONG(commit_concurrency, innobase_commit_concurrency,
PLUGIN_VAR_RQCMDARG, PLUGIN_VAR_RQCMDARG,
...@@ -9856,12 +9856,12 @@ static MYSQL_SYSVAR_LONG(file_io_threads, innobase_file_io_threads, ...@@ -9856,12 +9856,12 @@ static MYSQL_SYSVAR_LONG(file_io_threads, innobase_file_io_threads,
static MYSQL_SYSVAR_ULONG(read_io_threads, innobase_read_io_threads, static MYSQL_SYSVAR_ULONG(read_io_threads, innobase_read_io_threads,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Number of background read I/O threads in InnoDB.", "Number of background read I/O threads in InnoDB.",
NULL, NULL, 8, 1, 64, 0); NULL, NULL, 4, 1, 64, 0);
static MYSQL_SYSVAR_ULONG(write_io_threads, innobase_write_io_threads, static MYSQL_SYSVAR_ULONG(write_io_threads, innobase_write_io_threads,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Number of background write I/O threads in InnoDB.", "Number of background write I/O threads in InnoDB.",
NULL, NULL, 8, 1, 64, 0); NULL, NULL, 4, 1, 64, 0);
static MYSQL_SYSVAR_LONG(force_recovery, innobase_force_recovery, static MYSQL_SYSVAR_LONG(force_recovery, innobase_force_recovery,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
...@@ -9871,17 +9871,17 @@ static MYSQL_SYSVAR_LONG(force_recovery, innobase_force_recovery, ...@@ -9871,17 +9871,17 @@ static MYSQL_SYSVAR_LONG(force_recovery, innobase_force_recovery,
static MYSQL_SYSVAR_LONG(log_buffer_size, innobase_log_buffer_size, static MYSQL_SYSVAR_LONG(log_buffer_size, innobase_log_buffer_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"The size of the buffer which InnoDB uses to write log to the log files on disk.", "The size of the buffer which InnoDB uses to write log to the log files on disk.",
NULL, NULL, 16*1024*1024L, 256*1024L, LONG_MAX, 1024); NULL, NULL, 8*1024*1024L, 256*1024L, LONG_MAX, 1024);
static MYSQL_SYSVAR_LONGLONG(log_file_size, innobase_log_file_size, static MYSQL_SYSVAR_LONGLONG(log_file_size, innobase_log_file_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Size of each log file in a log group.", "Size of each log file in a log group.",
NULL, NULL, 128*1024*1024L, 1*1024*1024L, LONGLONG_MAX, 1024*1024L); NULL, NULL, 5*1024*1024L, 1*1024*1024L, LONGLONG_MAX, 1024*1024L);
static MYSQL_SYSVAR_LONG(log_files_in_group, innobase_log_files_in_group, static MYSQL_SYSVAR_LONG(log_files_in_group, innobase_log_files_in_group,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Number of log files in the log group. InnoDB writes to the files in a circular fashion. Value 3 is recommended here.", "Number of log files in the log group. InnoDB writes to the files in a circular fashion. Value 3 is recommended here.",
NULL, NULL, 3, 2, 100, 0); NULL, NULL, 2, 2, 100, 0);
static MYSQL_SYSVAR_LONG(mirrored_log_groups, innobase_mirrored_log_groups, static MYSQL_SYSVAR_LONG(mirrored_log_groups, innobase_mirrored_log_groups,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
......
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
testdir=$(prefix)/mysql-test/ndb testroot=$(prefix)
testdir=$(testroot)/mysql-test/ndb
include $(top_srcdir)/storage/ndb/config/common.mk.am include $(top_srcdir)/storage/ndb/config/common.mk.am
include $(top_srcdir)/storage/ndb/config/type_util.mk.am include $(top_srcdir)/storage/ndb/config/type_util.mk.am
......
...@@ -309,7 +309,7 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \ ...@@ -309,7 +309,7 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \
--with-blackhole-storage-engine \ --with-blackhole-storage-engine \
--with-federated-storage-engine \ --with-federated-storage-engine \
--without-plugin-daemon_example \ --without-plugin-daemon_example \
--without-plugin-example \ --without-plugin-ftexample \
--with-partition \ --with-partition \
--with-big-tables \ --with-big-tables \
%if %{WITH_BUNDLED_ZLIB} %if %{WITH_BUNDLED_ZLIB}
...@@ -701,7 +701,11 @@ fi ...@@ -701,7 +701,11 @@ fi
%attr(755, root, root) %{_bindir}/resolve_stack_dump %attr(755, root, root) %{_bindir}/resolve_stack_dump
%attr(755, root, root) %{_bindir}/resolveip %attr(755, root, root) %{_bindir}/resolveip
%attr(755, root, root) %{_libdir}/plugin/*.so* %attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so*
%if %{WITHOUT_INNODB_PLUGIN}
%else
%attr(755, root, root) %{_libdir}/mysql/plugin/ha_innodb_plugin.so*
%endif
%attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld
%attr(755, root, root) %{_sbindir}/mysqld-debug %attr(755, root, root) %{_sbindir}/mysqld-debug
...@@ -827,8 +831,13 @@ fi ...@@ -827,8 +831,13 @@ fi
%{_libdir}/mysql/libvio.a %{_libdir}/mysql/libvio.a
%{_libdir}/mysql/libz.a %{_libdir}/mysql/libz.a
%{_libdir}/mysql/libz.la %{_libdir}/mysql/libz.la
%{_libdir}/plugin/*.a %{_libdir}/mysql/plugin/ha_example.a
%{_libdir}/plugin/*.la %{_libdir}/mysql/plugin/ha_example.la
%if %{WITHOUT_INNODB_PLUGIN}
%else
%{_libdir}/mysql/plugin/ha_innodb_plugin.a
%{_libdir}/mysql/plugin/ha_innodb_plugin.la
%endif
%files shared %files shared
%defattr(-, root, root, 0755) %defattr(-, root, root, 0755)
...@@ -874,9 +883,9 @@ fi ...@@ -874,9 +883,9 @@ fi
* Fri Aug 21 2009 Jonathan Perkin <jperkin@sun.com> * Fri Aug 21 2009 Jonathan Perkin <jperkin@sun.com>
- Install plugin libraries in appropriate packages. - Install plugin libraries in appropriate packages.
- Disable example plugins. - Disable libdaemon_example and ftexample plugins.
* Thu Aug 20 2009 Jonathan Perkin <jperkin@stripped> * Thu Aug 20 2009 Jonathan Perkin <jperkin@sun.com>
- Update variable used for mysql-test suite location to match source. - Update variable used for mysql-test suite location to match source.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment