mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
univ.i Prevent inlining of functions on HP-UX because GCC is broken there
configure.in Prevent inlining of functions on HP-UX because GCC is broken there trx0trx.h Fix trx->error_info in MySQL debug version: Innobase and ha_innobase.cc saw a different size for pthread_mutex_t trx0trx.c Fix trx->error_info in MySQL debug version: Innobase and ha_innobase.cc saw a different size for pthread_mutex_t ha_innobase.cc Fix trx->error_info in MySQL debug version: Innobase and ha_innobase.cc saw a different size for pthread_mutex_t
This commit is contained in:
parent
ae5ee2d2d5
commit
ae05b07fb7
6 changed files with 35 additions and 3 deletions
|
@ -1 +1,2 @@
|
|||
jani@janikt.pp.saunalahti.fi
|
||||
heikki@donna.mysql.fi
|
||||
|
|
|
@ -1,15 +1,21 @@
|
|||
# Process this file with autoconf to produce a configure script
|
||||
AC_INIT
|
||||
AC_CANONICAL_SYSTEM
|
||||
AM_MAINTAINER_MODE
|
||||
AM_CONFIG_HEADER(ib_config.h)
|
||||
AM_INIT_AUTOMAKE(ib, 0.90)
|
||||
AC_PROG_CC
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_INSTALL
|
||||
AC_CHECK_HEADERS(aio.h)
|
||||
AC_CHECK_SIZEOF(int, 4)
|
||||
AC_C_INLINE
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
case "$target_os" in
|
||||
hp*) AC_DEFINE(UNIV_MUST_NOT_INLINE, 1,
|
||||
No inlining because gcc broken on HP-UX);;
|
||||
esac
|
||||
|
||||
AC_OUTPUT(Makefile os/Makefile ut/Makefile btr/Makefile
|
||||
buf/Makefile com/Makefile data/Makefile
|
||||
|
|
|
@ -24,6 +24,14 @@ saving CPU time. The kernel mutex contention is increased, however. */
|
|||
|
||||
extern ulint trx_n_mysql_transactions;
|
||||
|
||||
/********************************************************************
|
||||
Retrieves the error_info field from a trx. */
|
||||
|
||||
void*
|
||||
trx_get_error_info(
|
||||
/*===============*/
|
||||
/* out: the error info */
|
||||
trx_t* trx); /* in: trx object */
|
||||
/********************************************************************
|
||||
Creates and initializes a transaction object. */
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ subdirectory of 'mysql'. */
|
|||
/* the above option enables basic recovery debugging:
|
||||
new allocated file pages are reset */
|
||||
|
||||
#if (!defined(UNIV_DEBUG) && !defined(INSIDE_HA_INNOBASE_CC))
|
||||
#if (!defined(UNIV_DEBUG) && !defined(INSIDE_HA_INNOBASE_CC) && !defined(UNIV_MUST_NOT_INLINE))
|
||||
/* Definition for inline version */
|
||||
|
||||
#ifdef __WIN__
|
||||
|
|
|
@ -30,6 +30,17 @@ sess_t* trx_dummy_sess = NULL;
|
|||
the kernel mutex */
|
||||
ulint trx_n_mysql_transactions = 0;
|
||||
|
||||
/********************************************************************
|
||||
Retrieves the error_info field from a trx. */
|
||||
|
||||
void*
|
||||
trx_get_error_info(
|
||||
/*===============*/
|
||||
/* out: the error info */
|
||||
trx_t* trx) /* in: trx object */
|
||||
{
|
||||
return(trx->error_info);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Creates and initializes a transaction object. */
|
||||
|
|
|
@ -2575,10 +2575,16 @@ ha_innobase::info(
|
|||
}
|
||||
}
|
||||
|
||||
/* The trx struct in Innobase contains a pthread mutex embedded:
|
||||
in the debug version of MySQL that it replaced by a 'safe mutex'
|
||||
which is of a different size. We have to use a function to access
|
||||
trx fields. Otherwise trx->error_info will be a random
|
||||
pointer and cause a seg fault. */
|
||||
|
||||
if (flag & HA_STATUS_ERRKEY) {
|
||||
errkey = (unsigned int) row_get_mysql_key_number_for_index(
|
||||
(dict_index_t*)
|
||||
prebuilt->trx->error_info);
|
||||
(dict_index_t*)
|
||||
trx_get_error_info(prebuilt->trx));
|
||||
}
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
|
|
Loading…
Reference in a new issue