Commit 7caef7f4 authored by unknown's avatar unknown

compatibility fixes, crashing tests


include/my_sys.h:
  sol9x86, sunfire100b, qnx compatibility
mysql-test/t/rpl_rotate_logs.test:
  fix the test
sql/ha_innodb.cc:
  don't bother
sql/handler.cc:
  few more ways to crash mysqld :)
sql/handler.h:
  gdb/safemalloc workaround
sql/log.cc:
  rotate a binlog on heuristic recover
sql/mysqld.cc:
  rotate a binlog on heuristic recover
parent 17cca96e
......@@ -804,8 +804,13 @@ my_bool my_gethwaddr(uchar *to);
#endif
#define my_mmap(a,b,c,d,e,f) mmap(a,b,c,d,e,f)
#ifdef HAVE_GETPAGESIZE
#define my_getpagesize() getpagesize()
#define my_munmap(a,b) munmap(a,b)
#else
/* qnx ? */
#define my_getpagesize() 8192
#endif
#define my_munmap(a,b) munmap((char*)(a),(b))
#else
/* not a complete set of mmap() flags, but only those that nesessary */
......
......@@ -174,6 +174,7 @@ while ($1)
--enable_query_log
commit;
drop table t1;
--replace_result "xid=373" "xid=146"
show binlog events in 'master-bin.000001';
show binlog events in 'master-bin.000002';
......@@ -1346,7 +1346,7 @@ innobase_commit_low(
return;
}
#ifdef HAVE_REPLICATION
#ifdef DISABLE_HAVE_REPLICATION
if (current_thd->slave_thread) {
/* Update the replication position info inside InnoDB */
......
......@@ -553,6 +553,7 @@ int ha_commit_trans(THD *thd, bool all)
#ifdef USING_TRANSACTIONS
if (trans->nht)
{
DBUG_EXECUTE_IF("crash_commit_before", abort(););
if (!trans->no_2pc && trans->nht > 1)
{
for (; *ht && !error; ht++)
......@@ -565,16 +566,20 @@ int ha_commit_trans(THD *thd, bool all)
}
statistic_increment(thd->status_var.ha_prepare_count,&LOCK_status);
}
DBUG_EXECUTE_IF("crash_commit_after_prepare", abort(););
if (error || (is_real_trans && xid &&
(error= !(cookie= tc_log->log(thd, xid)))))
{
ha_rollback_trans(thd, all);
return 1;
}
DBUG_EXECUTE_IF("crash_commit_after_log", abort(););
}
error=ha_commit_one_phase(thd, all) ? cookie ? 2 : 1 : 0;
DBUG_EXECUTE_IF("crash_commit_before_unlog", abort(););
if (cookie)
tc_log->unlog(cookie, xid);
DBUG_EXECUTE_IF("crash_commit_after", abort(););
}
#endif /* USING_TRANSACTIONS */
DBUG_RETURN(error);
......@@ -738,8 +743,7 @@ int ha_recover(HASH *commit_list)
DBUG_ASSERT(total_ha_2pc);
DBUG_ASSERT(commit_list || tc_heuristic_recover);
for (len=commit_list ? commit_list->records : MAX_XID_LIST_SIZE ;
list==0 && len > MIN_XID_LIST_SIZE; len/=2)
for (len= MAX_XID_LIST_SIZE ; list==0 && len > MIN_XID_LIST_SIZE; len/=2)
{
list=(XID *)my_malloc(len*sizeof(XID), MYF(0));
}
......
......@@ -253,7 +253,11 @@ typedef struct xid_t XID;
/* for recover() handlerton call */
#define MIN_XID_LIST_SIZE 128
#ifdef SAFEMALLOC
#define MAX_XID_LIST_SIZE 256
#else
#define MAX_XID_LIST_SIZE (1024*128)
#endif
/*
handlerton is a singleton structure - one instance per storage engine -
......
......@@ -2903,7 +2903,12 @@ int TC_LOG_BINLOG::open(const char *opt_name)
pthread_cond_init (&COND_prep_xids, 0);
if (using_heuristic_recover())
{
/* generate a new binlog to mask a corrupted one */
open(opt_name, LOG_BIN, 0, WRITE_CACHE, 0, max_binlog_size, 0);
cleanup();
return 1;
}
if ((error= find_log_pos(&log_info, NullS, 1)))
{
......
......@@ -2738,7 +2738,7 @@ server.");
(TC_LOG *)&tc_log_mmap :
(TC_LOG *)&tc_log_dummy;
if (tc_log->open(opt_tc_log_file))
if (tc_log->open(opt_bin_logname))
{
sql_print_error("Can't init tc log");
unireg_abort(1);
......
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