summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-05-27 00:30:28 +0300
committerunknown <monty@mysql.com>2004-05-27 00:30:28 +0300
commit7c5cd4125dfe7b6891aeffc567387573695714c3 (patch)
tree5ed4e118d371f2a1d84eaaef85c5869d24977363
parent5fe72df8fd23a5b5f6938a9e559e916594b78449 (diff)
parentcc24ac7079827af1290a87ca0d5ce817329a9f6b (diff)
downloadmariadb-git-7c5cd4125dfe7b6891aeffc567387573695714c3.tar.gz
merge with 4.0 to get windows fixes
VC++Files/client/mysqlclient.dsp: Auto merged VC++Files/innobase/innobase.dsp: Auto merged include/mysql.h: Auto merged include/mysql_com.h: Auto merged innobase/include/log0log.h: Auto merged innobase/include/log0log.ic: Auto merged innobase/include/mtr0mtr.h: Auto merged innobase/log/log0log.c: Auto merged innobase/log/log0recv.c: Auto merged innobase/que/que0que.c: Auto merged libmysql/libmysql.c: Auto merged libmysql_r/Makefile.am: Auto merged sql/log_event.cc: Auto merged sql/mysqld.cc: Auto merged tools/mysqlmanager.c: Auto merged
-rw-r--r--VC++Files/client/mysqlclient.dsp4
-rw-r--r--VC++Files/innobase/innobase.dsp8
-rw-r--r--client/mysql.cc16
-rw-r--r--client/mysqldump.c14
-rw-r--r--include/mysql.h13
-rw-r--r--include/mysql_com.h9
-rw-r--r--innobase/include/log0log.h35
-rw-r--r--innobase/include/log0log.ic36
-rw-r--r--innobase/include/mtr0mtr.h12
-rw-r--r--innobase/log/log0log.c64
-rw-r--r--innobase/log/log0recv.c13
-rw-r--r--innobase/mtr/mtr0mtr.c199
-rw-r--r--innobase/que/que0que.c2
-rw-r--r--libmysql/libmysql.c8
-rw-r--r--libmysql/libmysql.def3
-rw-r--r--libmysql_r/Makefile.am2
-rw-r--r--libmysqld/lib_sql.cc5
-rw-r--r--libmysqld/libmysqld.c16
-rw-r--r--libmysqld/libmysqld.def3
-rw-r--r--sql/log_event.cc1
-rw-r--r--tools/mysqlmanager.c2
21 files changed, 78 insertions, 387 deletions
diff --git a/VC++Files/client/mysqlclient.dsp b/VC++Files/client/mysqlclient.dsp
index a46c3fd2369..c680ba28116 100644
--- a/VC++Files/client/mysqlclient.dsp
+++ b/VC++Files/client/mysqlclient.dsp
@@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "NDEBUG" /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /D "NDEBUG" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
@@ -65,7 +65,7 @@ LIB32=xilink6.exe -lib
# PROP Intermediate_Dir "debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /FD /c
+# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../include" /I "../" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "_WINDOWS" /D "USE_TLS" /D "MYSQL_CLIENT" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
diff --git a/VC++Files/innobase/innobase.dsp b/VC++Files/innobase/innobase.dsp
index 0768b3095ea..706938626e8 100644
--- a/VC++Files/innobase/innobase.dsp
+++ b/VC++Files/innobase/innobase.dsp
@@ -312,10 +312,6 @@ SOURCE=.\pars\pars0sym.c
# End Source File
# Begin Source File
-SOURCE=.\que\que0que.c
-# End Source File
-# Begin Source File
-
SOURCE=.\read\read0read.c
# End Source File
# Begin Source File
@@ -368,10 +364,6 @@ SOURCE=.\row\row0vers.c
# End Source File
# Begin Source File
-SOURCE=.\srv\srv0que.c
-# End Source File
-# Begin Source File
-
SOURCE=.\srv\srv0srv.c
# End Source File
# Begin Source File
diff --git a/client/mysql.cc b/client/mysql.cc
index 01d867cca07..6e5a1d17842 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -136,6 +136,7 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
tty_password= 0, opt_nobeep=0, opt_reconnect=1,
default_charset_used= 0, opt_secure_auth= 0,
default_pager_set= 0;
+static ulong opt_max_allowed_packet, opt_net_buffer_length;
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
static my_string opt_mysql_unix_port=0;
static int connect_flag=CLIENT_INTERACTIVE;
@@ -368,7 +369,7 @@ int main(int argc,char *argv[])
exit(1);
}
if (status.batch && !status.line_buff &&
- !(status.line_buff=batch_readline_init(max_allowed_packet+512,stdin)))
+ !(status.line_buff=batch_readline_init(opt_max_allowed_packet+512,stdin)))
{
free_defaults(defaults_argv);
my_end(0);
@@ -644,12 +645,12 @@ static struct my_option my_long_options[] =
0, 1},
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET,
"Max packet length to send to, or receive from server",
- (gptr*) &max_allowed_packet, (gptr*) &max_allowed_packet, 0, GET_ULONG,
+ (gptr*) &opt_max_allowed_packet, (gptr*) &opt_max_allowed_packet, 0, GET_ULONG,
REQUIRED_ARG, 16 *1024L*1024L, 4096, (longlong) 2*1024L*1024L*1024L,
MALLOC_OVERHEAD, 1024, 0},
{"net_buffer_length", OPT_NET_BUFFER_LENGTH,
"Buffer for TCP/IP and socket communication",
- (gptr*) &net_buffer_length, (gptr*) &net_buffer_length, 0, GET_ULONG,
+ (gptr*) &opt_net_buffer_length, (gptr*) &opt_net_buffer_length, 0, GET_ULONG,
REQUIRED_ARG, 16384, 1024, 512*1024*1024L, MALLOC_OVERHEAD, 1024, 0},
{"select_limit", OPT_SELECT_LIMIT,
"Automatic limit for SELECT when using --safe-updates",
@@ -839,6 +840,7 @@ static int get_options(int argc, char **argv)
{
char *tmp, *pagpoint;
int ho_error;
+ MYSQL_PARAMETERS *mysql_params= mysql_get_parameters();
tmp= (char *) getenv("MYSQL_HOST");
if (tmp)
@@ -854,9 +856,15 @@ static int get_options(int argc, char **argv)
strmov(pager, pagpoint);
strmov(default_pager, pager);
+ opt_max_allowed_packet= *mysql_params->p_max_allowed_packet;
+ opt_net_buffer_length= *mysql_params->p_net_buffer_length;
+
if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
exit(ho_error);
+ *mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
+ *mysql_params->p_net_buffer_length= opt_net_buffer_length;
+
if (status.batch) /* disable pager and outfile in this case */
{
strmov(default_pager, "stdout");
@@ -2529,7 +2537,7 @@ static int com_source(String *buffer, char *line)
return put_info(buff, INFO_ERROR, 0);
}
- if (!(line_buff=batch_readline_init(max_allowed_packet+512,sql_file)))
+ if (!(line_buff=batch_readline_init(opt_max_allowed_packet+512,sql_file)))
{
my_fclose(sql_file,MYF(0));
return put_info("Can't initialize batch_readline", INFO_ERROR, 0);
diff --git a/client/mysqldump.c b/client/mysqldump.c
index 0366e0da87f..afeed2e03fd 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -82,7 +82,7 @@ static my_bool verbose=0,tFlag=0,cFlag=0,dFlag=0,quick= 1, extended_insert= 1,
opt_autocommit=0,opt_master_data,opt_disable_keys=1,opt_xml=0,
opt_delete_master_logs=0, tty_password=0,
opt_single_transaction=0, opt_comments= 0, opt_compact= 0;
-
+static ulong opt_max_allowed_packet, opt_net_buffer_length;
static MYSQL mysql_connection,*sock=0;
static char insert_pat[12 * 1024],*opt_password=0,*current_user=0,
*current_host=0,*path=0,*fields_terminated=0,
@@ -95,7 +95,6 @@ static ulong opt_compatible_mode= 0;
static uint opt_mysql_port= 0, err_len= 0;
static my_string opt_mysql_unix_port=0;
static int first_error=0;
-extern ulong net_buffer_length;
static DYNAMIC_STRING extended_row;
#include <sslopt-vars.h>
FILE *md_result_file;
@@ -304,11 +303,11 @@ static struct my_option my_long_options[] =
{"xml", 'X', "Dump a database as well formed XML.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET, "",
- (gptr*) &max_allowed_packet, (gptr*) &max_allowed_packet, 0,
+ (gptr*) &opt_max_allowed_packet, (gptr*) &opt_max_allowed_packet, 0,
GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096,
(longlong) 2L*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
{"net_buffer_length", OPT_NET_BUFFER_LENGTH, "",
- (gptr*) &net_buffer_length, (gptr*) &net_buffer_length, 0,
+ (gptr*) &opt_net_buffer_length, (gptr*) &opt_net_buffer_length, 0,
GET_ULONG, REQUIRED_ARG, 1024*1024L-1025, 4096, 16*1024L*1024L,
MALLOC_OVERHEAD-1024, 1024, 0},
{"comments", 'i', "Write additional information.",
@@ -566,6 +565,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
static int get_options(int *argc, char ***argv)
{
int ho_error;
+ MYSQL_PARAMETERS *mysql_params= mysql_get_parameters();
+
+ opt_max_allowed_packet= *mysql_params->p_max_allowed_packet;
+ opt_net_buffer_length= *mysql_params->p_net_buffer_length;
md_result_file= stdout;
load_defaults("my",load_default_groups,argc,argv);
@@ -573,6 +576,9 @@ static int get_options(int *argc, char ***argv)
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
exit(ho_error);
+ *mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
+ *mysql_params->p_net_buffer_length= opt_net_buffer_length;
+
if (opt_delayed)
opt_lock=0; /* Can't have lock with delayed */
if (!path && (enclosed || opt_enclosed || escaped || lines_terminated ||
diff --git a/include/mysql.h b/include/mysql.h
index 51540a7d89f..ad85bcc1bbd 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -317,6 +317,17 @@ typedef struct st_mysql_manager
char last_error[MAX_MYSQL_MANAGER_ERR];
} MYSQL_MANAGER;
+typedef struct st_mysql_parameters
+{
+ unsigned long *p_max_allowed_packet;
+ unsigned long *p_net_buffer_length;
+} MYSQL_PARAMETERS;
+
+#if !defined(MYSQL_CLIENT) && !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
+#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
+#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length)
+#endif
+
/*
Set up and bring down the server; to ensure that applications will
work when linked against either the standard client library or the
@@ -325,6 +336,8 @@ typedef struct st_mysql_manager
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
void STDCALL mysql_server_end(void);
+MYSQL_PARAMETERS *STDCALL mysql_get_parameters();
+
/*
Set up and bring down a thread; these function should be called
for each thread in an application which opens at least one MySQL
diff --git a/include/mysql_com.h b/include/mysql_com.h
index 801937a9e7b..d354a979cd1 100644
--- a/include/mysql_com.h
+++ b/include/mysql_com.h
@@ -36,12 +36,6 @@
#define MYSQL_SERVICENAME "MySQL"
#endif /* __WIN__ */
-#if defined(__WIN__) && !defined(MYSQL_SERVER) && !defined(MYSQL_CLIENT) && !defined(EMBEDDED_LIBRARY)
-#define dll_import_spec __declspec( dllimport )
-#else
-#define dll_import_spec
-#endif
-
enum enum_server_command
{
COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
@@ -312,9 +306,6 @@ typedef struct st_udf_init
extern "C" {
#endif
-dll_import_spec extern unsigned long max_allowed_packet;
-dll_import_spec extern unsigned long net_buffer_length;
-
/*
These functions are used for authentication by client and server and
implemented in sql/password.c
diff --git a/innobase/include/log0log.h b/innobase/include/log0log.h
index 4badd2cd7b3..25adc3b24b7 100644
--- a/innobase/include/log0log.h
+++ b/innobase/include/log0log.h
@@ -114,20 +114,6 @@ dulint
log_get_lsn(void);
/*=============*/
/* out: current lsn */
-/****************************************************************************
-Gets the online backup lsn. */
-UNIV_INLINE
-dulint
-log_get_online_backup_lsn_low(void);
-/*===============================*/
-/****************************************************************************
-Gets the online backup state. */
-UNIV_INLINE
-ibool
-log_get_online_backup_state_low(void);
-/*=================================*/
- /* out: online backup state, the caller must
- own the log_sys mutex */
/**********************************************************
Initializes the log. */
@@ -326,20 +312,6 @@ log_archived_file_name_gen(
char* buf, /* in: buffer where to write */
ulint id, /* in: group id */
ulint file_no);/* in: file number */
-/**********************************************************
-Switches the database to the online backup state. */
-
-ulint
-log_switch_backup_state_on(void);
-/*============================*/
- /* out: DB_SUCCESS or DB_ERROR */
-/**********************************************************
-Switches the online backup state off. */
-
-ulint
-log_switch_backup_state_off(void);
-/*=============================*/
- /* out: DB_SUCCESS or DB_ERROR */
/************************************************************************
Checks that there is enough free space in the log to start a new query step.
Flushes the log buffer or makes a new checkpoint if necessary. NOTE: this
@@ -878,13 +850,6 @@ struct log_struct{
os_event_t archiving_on; /* if archiving has been stopped,
a thread can wait for this event to
become signaled */
- /* Fields involved in online backups */
- ibool online_backup_state;
- /* TRUE if the database is in the
- online backup state */
- dulint online_backup_lsn;
- /* lsn when the state was changed to
- the online backup state */
};
#define LOG_ARCH_ON 71
diff --git a/innobase/include/log0log.ic b/innobase/include/log0log.ic
index e273b6a292b..3a4a3c6a5e6 100644
--- a/innobase/include/log0log.ic
+++ b/innobase/include/log0log.ic
@@ -318,8 +318,7 @@ log_reserve_and_write_fast(
data_len = len + log->buf_free % OS_FILE_LOG_BLOCK_SIZE;
- if (log->online_backup_state
- || (data_len >= OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_TRL_SIZE)) {
+ if (data_len >= OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_TRL_SIZE) {
/* The string does not fit within the current log block
or the log block would become full */
@@ -403,36 +402,3 @@ log_free_check(void)
log_check_margins();
}
}
-
-/****************************************************************************
-Gets the online backup lsn. */
-UNIV_INLINE
-dulint
-log_get_online_backup_lsn_low(void)
-/*===============================*/
- /* out: online_backup_lsn, the caller must
- own the log_sys mutex */
-{
-#ifdef UNIV_SYNC_DEBUG
- ut_ad(mutex_own(&(log_sys->mutex)));
-#endif /* UNIV_SYNC_DEBUG */
- ut_ad(log_sys->online_backup_state);
-
- return(log_sys->online_backup_lsn);
-}
-
-/****************************************************************************
-Gets the online backup state. */
-UNIV_INLINE
-ibool
-log_get_online_backup_state_low(void)
-/*=================================*/
- /* out: online backup state, the caller must
- own the log_sys mutex */
-{
-#ifdef UNIV_SYNC_DEBUG
- ut_ad(mutex_own(&(log_sys->mutex)));
-#endif /* UNIV_SYNC_DEBUG */
-
- return(log_sys->online_backup_state);
-}
diff --git a/innobase/include/mtr0mtr.h b/innobase/include/mtr0mtr.h
index f6dfe23bc41..55fa3d80a42 100644
--- a/innobase/include/mtr0mtr.h
+++ b/innobase/include/mtr0mtr.h
@@ -82,7 +82,7 @@ flag value must give the length also! */
predefined minimum record */
#define MLOG_IBUF_BITMAP_INIT ((byte)27) /* initialize an ibuf bitmap
page */
-#define MLOG_FULL_PAGE ((byte)28) /* full contents of a page */
+/*#define MLOG_FULL_PAGE ((byte)28) full contents of a page */
#define MLOG_INIT_FILE_PAGE ((byte)29) /* this means that a file page
is taken into use and the prior
contents of the page should be
@@ -236,16 +236,6 @@ mtr_memo_release(
mtr_t* mtr, /* in: mtr */
void* object, /* in: object */
ulint type); /* in: object type: MTR_MEMO_S_LOCK, ... */
-/****************************************************************
-Parses a log record which contains the full contents of a page. */
-
-byte*
-mtr_log_parse_full_page(
-/*====================*/
- /* out: end of log record or NULL */
- byte* ptr, /* in: buffer */
- byte* end_ptr,/* in: buffer end */
- page_t* page); /* in: page or NULL */
/**************************************************************
Checks if memo contains the given item. */
UNIV_INLINE
diff --git a/innobase/log/log0log.c b/innobase/log/log0log.c
index 292fed4b4ec..769889a21d7 100644
--- a/innobase/log/log0log.c
+++ b/innobase/log/log0log.c
@@ -790,11 +790,7 @@ log_init(void)
log_sys->archiving_on = os_event_create(NULL);
/*----------------------------*/
-
- log_sys->online_backup_state = FALSE;
- /*----------------------------*/
-
log_block_init(log_sys->buf, log_sys->lsn);
log_block_set_first_rec_group(log_sys->buf, LOG_BLOCK_HDR_SIZE);
@@ -3003,66 +2999,6 @@ loop:
mutex_exit(&(log_sys->mutex));
}
-/**********************************************************
-Switches the database to the online backup state. */
-
-ulint
-log_switch_backup_state_on(void)
-/*============================*/
- /* out: DB_SUCCESS or DB_ERROR */
-{
- dulint backup_lsn;
-
- mutex_enter(&(log_sys->mutex));
-
- if (log_sys->online_backup_state) {
-
- /* The database is already in that state */
-
- mutex_exit(&(log_sys->mutex));
-
- return(DB_ERROR);
- }
-
- log_sys->online_backup_state = TRUE;
-
- backup_lsn = log_sys->lsn;
-
- log_sys->online_backup_lsn = backup_lsn;
-
- mutex_exit(&(log_sys->mutex));
-
- /* log_checkpoint_and_mark_file_spaces(); */
-
- return(DB_SUCCESS);
-}
-
-/**********************************************************
-Switches the online backup state off. */
-
-ulint
-log_switch_backup_state_off(void)
-/*=============================*/
- /* out: DB_SUCCESS or DB_ERROR */
-{
- mutex_enter(&(log_sys->mutex));
-
- if (!log_sys->online_backup_state) {
-
- /* The database is already in that state */
-
- mutex_exit(&(log_sys->mutex));
-
- return(DB_ERROR);
- }
-
- log_sys->online_backup_state = FALSE;
-
- mutex_exit(&(log_sys->mutex));
-
- return(DB_SUCCESS);
-}
-
/********************************************************************
Makes a checkpoint at the latest lsn and writes it to first page of each
data file in the database, so that we know that the file spaces contain
diff --git a/innobase/log/log0recv.c b/innobase/log/log0recv.c
index 65fb3466ad5..ff92335188d 100644
--- a/innobase/log/log0recv.c
+++ b/innobase/log/log0recv.c
@@ -808,9 +808,6 @@ recv_parse_or_apply_log_rec_body(
} else if (type == MLOG_IBUF_BITMAP_INIT) {
new_ptr = ibuf_parse_bitmap_init(ptr, end_ptr, page, mtr);
- } else if (type == MLOG_FULL_PAGE) {
- new_ptr = mtr_log_parse_full_page(ptr, end_ptr, page);
-
} else if (type == MLOG_INIT_FILE_PAGE) {
new_ptr = fsp_parse_init_file_page(ptr, end_ptr, page);
@@ -1127,15 +1124,7 @@ recv_recover_page(
buf = ((byte*)(recv->data)) + sizeof(recv_data_t);
}
- if (recv->type == MLOG_INIT_FILE_PAGE
- || recv->type == MLOG_FULL_PAGE) {
- /* A new file page may have been taken into use,
- or we have stored the full contents of the page:
- in this case it may be that the original log record
- type was MLOG_INIT_FILE_PAGE, and we replaced it
- with MLOG_FULL_PAGE, thus we have to apply
- any record of type MLOG_FULL_PAGE */
-
+ if (recv->type == MLOG_INIT_FILE_PAGE) {
page_lsn = page_newest_lsn;
mach_write_to_8(page + UNIV_PAGE_SIZE
diff --git a/innobase/mtr/mtr0mtr.c b/innobase/mtr/mtr0mtr.c
index fa1481dcb5f..deb4dabde4b 100644
--- a/innobase/mtr/mtr0mtr.c
+++ b/innobase/mtr/mtr0mtr.c
@@ -106,179 +106,6 @@ mtr_memo_pop_all(
}
/****************************************************************
-Writes to the log the contents of a full page. This is called when the
-database is in the online backup state. */
-static
-void
-mtr_log_write_full_page(
-/*====================*/
- page_t* page, /* in: page to write */
- ulint i, /* in: i'th page for mtr */
- ulint n_pages,/* in: total number of pages for mtr */
- mtr_t* mtr) /* in: mtr */
-{
- byte* buf;
- byte* ptr;
- ulint len;
-
- buf = mem_alloc(UNIV_PAGE_SIZE + 50);
-
- ptr = mlog_write_initial_log_record_fast(page, MLOG_FULL_PAGE, buf,
- mtr);
- ut_memcpy(ptr, page, UNIV_PAGE_SIZE);
-
- len = (ptr - buf) + UNIV_PAGE_SIZE;
-
- if (i == n_pages - 1) {
- if (n_pages > 1) {
- *(buf + len) = MLOG_MULTI_REC_END;
- len++;
- } else {
- *buf = (byte)((ulint)*buf | MLOG_SINGLE_REC_FLAG);
- }
- }
-
- ut_ad(len < UNIV_PAGE_SIZE + 50);
-
- log_write_low(buf, len);
-
- mem_free(buf);
-}
-
-/****************************************************************
-Parses a log record which contains the full contents of a page. */
-
-byte*
-mtr_log_parse_full_page(
-/*====================*/
- /* out: end of log record or NULL */
- byte* ptr, /* in: buffer */
- byte* end_ptr,/* in: buffer end */
- page_t* page) /* in: page or NULL */
-{
- if (end_ptr < ptr + UNIV_PAGE_SIZE) {
-
- return(NULL);
- }
-
- if (page) {
- ut_memcpy(page, ptr, UNIV_PAGE_SIZE);
- }
-
- return(ptr + UNIV_PAGE_SIZE);
-}
-
-/****************************************************************
-Writes to the database log the full contents of the pages that this mtr has
-modified. */
-static
-void
-mtr_log_write_backup_full_pages(
-/*============================*/
- mtr_t* mtr, /* in: mini-transaction */
- ulint n_pages)/* in: number of pages modified by mtr */
-{
- mtr_memo_slot_t* slot;
- dyn_array_t* memo;
- buf_block_t* block;
- ulint offset;
- ulint type;
- ulint i;
-
- ut_ad(mtr);
- ut_ad(mtr->magic_n == MTR_MAGIC_N);
- ut_ad(mtr->state == MTR_COMMITTING);
-
- /* Open the database log for log_write_low */
- mtr->start_lsn = log_reserve_and_open(n_pages * (UNIV_PAGE_SIZE + 50));
-
- memo = &(mtr->memo);
-
- offset = dyn_array_get_data_size(memo);
-
- i = 0;
-
- while (offset > 0) {
- offset -= sizeof(mtr_memo_slot_t);
- slot = dyn_array_get_element(memo, offset);
-
- block = slot->object;
- type = slot->type;
-
- if ((block != NULL) && (type == MTR_MEMO_PAGE_X_FIX)) {
-
- mtr_log_write_full_page(block->frame, i, n_pages, mtr);
-
- i++;
- }
- }
-
- ut_ad(i == n_pages);
-}
-
-/****************************************************************
-Checks if mtr is the first to modify any page after online_backup_lsn. */
-static
-ibool
-mtr_first_to_modify_page_after_backup(
-/*==================================*/
- /* out: TRUE if first for a page */
- mtr_t* mtr, /* in: mini-transaction */
- ulint* n_pages) /* out: number of modified pages (all modified
- pages, backup_lsn does not matter here) */
-{
- mtr_memo_slot_t* slot;
- dyn_array_t* memo;
- ulint offset;
- buf_block_t* block;
- ulint type;
- dulint backup_lsn;
- ibool ret = FALSE;
-
- ut_ad(mtr);
- ut_ad(mtr->magic_n == MTR_MAGIC_N);
- ut_ad(mtr->state == MTR_COMMITTING);
-
- backup_lsn = log_get_online_backup_lsn_low();
-
- memo = &(mtr->memo);
-
- offset = dyn_array_get_data_size(memo);
-
- *n_pages = 0;
-
- while (offset > 0) {
- offset -= sizeof(mtr_memo_slot_t);
- slot = dyn_array_get_element(memo, offset);
-
- block = slot->object;
- type = slot->type;
-
- if ((block != NULL) && (type == MTR_MEMO_PAGE_X_FIX)) {
-
- *n_pages = *n_pages + 1;
-
- if (ut_dulint_cmp(buf_frame_get_newest_modification(
- block->frame),
- backup_lsn) <= 0) {
-
- fprintf(stderr,
- "Page %lu newest %lu backup %lu\n",
- (ulong) block->offset,
- (ulong) ut_dulint_get_low(
- buf_frame_get_newest_modification(
- block->frame)),
- (ulong) ut_dulint_get_low(backup_lsn));
-
- ret = TRUE;
- }
- }
- }
-
- return(ret);
-}
-
-/****************************************************************
Writes the contents of a mini-transaction log, if any, to the database log. */
static
void
@@ -291,7 +118,6 @@ mtr_log_reserve_and_write(
ulint data_size;
ibool success;
byte* first_data;
- ulint n_modified_pages;
ut_ad(mtr);
@@ -322,27 +148,12 @@ mtr_log_reserve_and_write(
if (mtr->log_mode == MTR_LOG_ALL) {
- if (log_get_online_backup_state_low()
- && mtr_first_to_modify_page_after_backup(mtr,
- &n_modified_pages)) {
-
- /* The database is in the online backup state: write
- to the log the full contents of all the pages if this
- mtr is the first to modify any page in the buffer pool
- after online_backup_lsn */
-
- log_close();
- log_release();
-
- mtr_log_write_backup_full_pages(mtr, n_modified_pages);
- } else {
- block = mlog;
+ block = mlog;
- while (block != NULL) {
- log_write_low(dyn_block_get_data(block),
- dyn_block_get_used(block));
- block = dyn_array_get_next_block(mlog, block);
- }
+ while (block != NULL) {
+ log_write_low(dyn_block_get_data(block),
+ dyn_block_get_used(block));
+ block = dyn_array_get_next_block(mlog, block);
}
} else {
ut_ad(mtr->log_mode == MTR_LOG_NONE);
diff --git a/innobase/que/que0que.c b/innobase/que/que0que.c
index 08bf7ce3e59..363376a72da 100644
--- a/innobase/que/que0que.c
+++ b/innobase/que/que0que.c
@@ -190,8 +190,6 @@ que_thr_end_wait(
ut_ad(mutex_own(&kernel_mutex));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(thr);
- ut_ad(next_thr);
- ut_ad(*next_thr == NULL);
ut_ad((thr->state == QUE_THR_LOCK_WAIT)
|| (thr->state == QUE_THR_PROCEDURE_WAIT)
|| (thr->state == QUE_THR_SIG_REPLY_WAIT));
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 7a376cad736..49b076d1b98 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -183,6 +183,14 @@ void STDCALL mysql_server_end()
mysql_client_init= org_my_init_done= 0;
}
+static MYSQL_PARAMETERS mysql_internal_parameters=
+{&max_allowed_packet, &net_buffer_length};
+
+MYSQL_PARAMETERS *STDCALL mysql_get_parameters()
+{
+ return &mysql_internal_parameters;
+}
+
my_bool STDCALL mysql_thread_init()
{
#ifdef THREAD
diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def
index 91691a2986a..97eefc103d3 100644
--- a/libmysql/libmysql.def
+++ b/libmysql/libmysql.def
@@ -16,7 +16,6 @@ EXPORTS
list_add
list_delete
load_defaults
- max_allowed_packet
my_end
my_getopt_print_errors
my_init
@@ -24,6 +23,7 @@ EXPORTS
my_memdup
my_no_flags_free
my_path
+ mysql_get_parameters
my_print_help
my_print_variables
my_realloc
@@ -116,7 +116,6 @@ EXPORTS
mysql_stmt_sqlstate
mysql_sqlstate
mysql_get_server_version
- net_buffer_length
set_dynamic
strcend
strcont
diff --git a/libmysql_r/Makefile.am b/libmysql_r/Makefile.am
index 60c29a99762..b75f65b6f78 100644
--- a/libmysql_r/Makefile.am
+++ b/libmysql_r/Makefile.am
@@ -18,7 +18,7 @@
target = libmysqlclient_r.la
-target_defs = -DDONT_USE_RAID @LIB_EXTRA_CCFLAGS@
+target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
LIBS = @LIBS@ @openssl_libs@
INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include $(openssl_includes)
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 2bbca220db9..26609e748a7 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -23,6 +23,11 @@
#define mysql_unix_port mysql_inix_port1
#define mysql_port mysql_port1
+extern "C"
+{
+ unsigned long max_allowed_packet, net_buffer_length;
+}
+
static int fake_argc= 1;
static char *fake_argv[]= {(char *)"", 0};
static const char *fake_groups[] = { "server", "embedded", 0 };
diff --git a/libmysqld/libmysqld.c b/libmysqld/libmysqld.c
index db9e828369d..b4804c62f2d 100644
--- a/libmysqld/libmysqld.c
+++ b/libmysqld/libmysqld.c
@@ -47,6 +47,9 @@
#define INADDR_NONE -1
#endif
+extern ulong net_buffer_length;
+extern ulong max_allowed_packet;
+
#if defined(MSDOS) || defined(__WIN__)
#define ERRNO WSAGetLastError()
#define perror(A)
@@ -81,7 +84,17 @@ static void end_server(MYSQL *mysql)
DBUG_VOID_RETURN;
}
-static inline int mysql_init_charset(MYSQL *mysql)
+
+static MYSQL_PARAMETERS mysql_internal_parameters=
+{&max_allowed_packet, &net_buffer_length};
+
+MYSQL_PARAMETERS *STDCALL mysql_get_parameters()
+{
+ return &mysql_internal_parameters;
+}
+
+
+static int mysql_init_charset(MYSQL *mysql)
{
char charset_name_buff[16], *charset_name;
@@ -124,6 +137,7 @@ static inline int mysql_init_charset(MYSQL *mysql)
return 0;
}
+
MYSQL * STDCALL
mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
const char *passwd, const char *db,
diff --git a/libmysqld/libmysqld.def b/libmysqld/libmysqld.def
index 8b2ad8379d6..7c93951df7a 100644
--- a/libmysqld/libmysqld.def
+++ b/libmysqld/libmysqld.def
@@ -92,7 +92,6 @@ EXPORTS
mysql_thread_safe
mysql_use_result
mysql_warning_count
- net_buffer_length
set_dynamic
strcend
strcont
@@ -128,5 +127,5 @@ EXPORTS
alloc_root
free_root
my_read
- max_allowed_packet
llstr
+ mysql_get_parameters
diff --git a/sql/log_event.cc b/sql/log_event.cc
index abbccb32034..fd65ec64a76 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -515,6 +515,7 @@ end:
#else
#define UNLOCK_MUTEX
#define LOCK_MUTEX
+#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
#endif
/*
diff --git a/tools/mysqlmanager.c b/tools/mysqlmanager.c
index 2e9f980bb5d..45865e97ab7 100644
--- a/tools/mysqlmanager.c
+++ b/tools/mysqlmanager.c
@@ -357,7 +357,7 @@ LOG_MSG_FUNC(log_info,LOG_INFO)
#ifndef DBUG_OFF
LOG_MSG_FUNC(log_debug,LOG_DEBUG)
#else
-void log_debug(const char* __attribute__((unused)) fmt,...) {}
+void log_debug(const char* fmt __attribute__((unused)),...) {}
#endif
static void handle_sigterm(int sig __attribute__((unused)))