Commit 2961966b authored by jimw@rama.(none)'s avatar jimw@rama.(none)

Merge bk-internal:/home/bk/mysql-5.0-maint

into  rama.(none):/home/jimw/my/mysql-5.0-clean
parents f53e014f d5d89bcf
...@@ -184,7 +184,7 @@ typedef struct my_charset_handler_st ...@@ -184,7 +184,7 @@ typedef struct my_charset_handler_st
/* Charset dependant snprintf() */ /* Charset dependant snprintf() */
int (*snprintf)(struct charset_info_st *, char *to, uint n, const char *fmt, int (*snprintf)(struct charset_info_st *, char *to, uint n, const char *fmt,
...); ...) ATTRIBUTE_FORMAT(printf, 4, 5);
int (*long10_to_str)(struct charset_info_st *, char *to, uint n, int radix, int (*long10_to_str)(struct charset_info_st *, char *to, uint n, int radix,
long int val); long int val);
int (*longlong10_to_str)(struct charset_info_st *, char *to, uint n, int (*longlong10_to_str)(struct charset_info_st *, char *to, uint n,
...@@ -319,7 +319,8 @@ int my_wc_mb_8bit(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e); ...@@ -319,7 +319,8 @@ int my_wc_mb_8bit(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
ulong my_scan_8bit(CHARSET_INFO *cs, const char *b, const char *e, int sq); ulong my_scan_8bit(CHARSET_INFO *cs, const char *b, const char *e, int sq);
int my_snprintf_8bit(struct charset_info_st *, char *to, uint n, int my_snprintf_8bit(struct charset_info_st *, char *to, uint n,
const char *fmt, ...); const char *fmt, ...)
ATTRIBUTE_FORMAT(printf, 4, 5);
long my_strntol_8bit(CHARSET_INFO *, const char *s, uint l, int base, long my_strntol_8bit(CHARSET_INFO *, const char *s, uint l, int base,
char **e, int *err); char **e, int *err);
......
...@@ -254,7 +254,8 @@ extern ulonglong strtoull(const char *str, char **ptr, int base); ...@@ -254,7 +254,8 @@ extern ulonglong strtoull(const char *str, char **ptr, int base);
extern int my_vsnprintf( char *str, size_t n, extern int my_vsnprintf( char *str, size_t n,
const char *format, va_list ap ); const char *format, va_list ap );
extern int my_snprintf(char* to, size_t n, const char* fmt, ...); extern int my_snprintf(char *to, size_t n, const char *fmt, ...)
ATTRIBUTE_FORMAT(printf, 3, 4);
#if defined(__cplusplus) && !defined(OS2) #if defined(__cplusplus) && !defined(OS2)
} }
......
...@@ -454,14 +454,34 @@ typedef unsigned short ushort; ...@@ -454,14 +454,34 @@ typedef unsigned short ushort;
#define function_volatile volatile #define function_volatile volatile
#define my_reinterpret_cast(A) reinterpret_cast<A> #define my_reinterpret_cast(A) reinterpret_cast<A>
#define my_const_cast(A) const_cast<A> #define my_const_cast(A) const_cast<A>
# ifndef GCC_VERSION
# define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
# endif
#elif !defined(my_reinterpret_cast) #elif !defined(my_reinterpret_cast)
#define my_reinterpret_cast(A) (A) #define my_reinterpret_cast(A) (A)
#define my_const_cast(A) (A) #define my_const_cast(A) (A)
#endif #endif
#if !defined(__attribute__) && (defined(__cplusplus) || !defined(__GNUC__) || __GNUC__ == 2 && __GNUC_MINOR__ < 8)
/*
Disable __attribute__() on GCC < 2.7 and non-GCC compilers
*/
#if !defined(__attribute__) && (!defined(__GNUC__) || GCC_VERSION < 2007)
#define __attribute__(A) #define __attribute__(A)
#endif #endif
/*
__attribute__((format(...))) is only supported in gcc >= 2.8 and g++ >= 3.4
*/
#ifndef ATTRIBUTE_FORMAT
# if defined(__GNUC__) && \
((!defined(__cplusplus__) && GCC_VERSION >= 2008) || \
GCC_VERSION >= 3004)
# define ATTRIBUTE_FORMAT(style, m, n) __attribute__((format(style, m, n)))
# else
# define ATTRIBUTE_FORMAT(style, m, n)
# endif
#endif
/* /*
Wen using the embedded library, users might run into link problems, Wen using the embedded library, users might run into link problems,
duplicate declaration of __cxa_pure_virtual, solved by declaring it a duplicate declaration of __cxa_pure_virtual, solved by declaring it a
......
...@@ -632,8 +632,8 @@ extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags); ...@@ -632,8 +632,8 @@ extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags);
extern int my_sync(File fd, myf my_flags); extern int my_sync(File fd, myf my_flags);
extern int my_error _VARARGS((int nr,myf MyFlags, ...)); extern int my_error _VARARGS((int nr,myf MyFlags, ...));
extern int my_printf_error _VARARGS((uint my_err, const char *format, extern int my_printf_error _VARARGS((uint my_err, const char *format,
myf MyFlags, ...) myf MyFlags, ...))
__attribute__ ((format (printf, 2, 4)))); ATTRIBUTE_FORMAT(printf, 2, 4);
extern int my_error_register(const char **errmsgs, int first, int last); extern int my_error_register(const char **errmsgs, int first, int last);
extern const char **my_error_unregister(int first, int last); extern const char **my_error_unregister(int first, int last);
extern int my_message(uint my_err, const char *str,myf MyFlags); extern int my_message(uint my_err, const char *str,myf MyFlags);
......
...@@ -65,7 +65,7 @@ static bool make_datetime(date_time_format_types format, TIME *ltime, ...@@ -65,7 +65,7 @@ static bool make_datetime(date_time_format_types format, TIME *ltime,
ltime->hour, ltime->minute, ltime->second); ltime->hour, ltime->minute, ltime->second);
break; break;
case TIME_MICROSECOND: case TIME_MICROSECOND:
length= cs->cset->snprintf(cs, buff, length, "%s%02d:%02d:%02d.%06d", length= cs->cset->snprintf(cs, buff, length, "%s%02d:%02d:%02d.%06ld",
ltime->neg ? "-" : "", ltime->neg ? "-" : "",
ltime->hour, ltime->minute, ltime->second, ltime->hour, ltime->minute, ltime->second,
ltime->second_part); ltime->second_part);
...@@ -82,7 +82,7 @@ static bool make_datetime(date_time_format_types format, TIME *ltime, ...@@ -82,7 +82,7 @@ static bool make_datetime(date_time_format_types format, TIME *ltime,
break; break;
case DATE_TIME_MICROSECOND: case DATE_TIME_MICROSECOND:
length= cs->cset->snprintf(cs, buff, length, length= cs->cset->snprintf(cs, buff, length,
"%04d-%02d-%02d %02d:%02d:%02d.%06d", "%04d-%02d-%02d %02d:%02d:%02d.%06ld",
ltime->year, ltime->month, ltime->day, ltime->year, ltime->month, ltime->day,
ltime->hour, ltime->minute, ltime->second, ltime->hour, ltime->minute, ltime->second,
ltime->second_part); ltime->second_part);
......
...@@ -1131,10 +1131,10 @@ bool init_errmessage(void); ...@@ -1131,10 +1131,10 @@ bool init_errmessage(void);
void sql_perror(const char *message); void sql_perror(const char *message);
void vprint_msg_to_log(enum loglevel level, const char *format, va_list args); void vprint_msg_to_log(enum loglevel level, const char *format, va_list args);
void sql_print_error(const char *format, ...); void sql_print_error(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
void sql_print_warning(const char *format, ...); void sql_print_warning(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
void sql_print_information(const char *format, ...); void sql_print_information(const char *format, ...)
ATTRIBUTE_FORMAT(printf, 1, 2);
bool fn_format_relative_to_data_home(my_string to, const char *name, bool fn_format_relative_to_data_home(my_string to, const char *name,
......
...@@ -1025,8 +1025,8 @@ extern "C" sig_handler print_signal_warning(int sig) ...@@ -1025,8 +1025,8 @@ extern "C" sig_handler print_signal_warning(int sig)
if (!DBUG_IN_USE) if (!DBUG_IN_USE)
{ {
if (global_system_variables.log_warnings) if (global_system_variables.log_warnings)
sql_print_warning("Got signal %d from thread %d", sql_print_warning("Got signal %d from thread %ld",
sig,my_thread_id()); sig, my_thread_id());
} }
#ifdef DONT_REMEMBER_SIGNAL #ifdef DONT_REMEMBER_SIGNAL
my_sigset(sig,print_signal_warning); /* int. thread system calls */ my_sigset(sig,print_signal_warning); /* int. thread system calls */
...@@ -1531,7 +1531,7 @@ static void network_init(void) ...@@ -1531,7 +1531,7 @@ static void network_init(void)
if (strlen(mysqld_unix_port) > (sizeof(UNIXaddr.sun_path) - 1)) if (strlen(mysqld_unix_port) > (sizeof(UNIXaddr.sun_path) - 1))
{ {
sql_print_error("The socket file path is too long (> %d): %s", sql_print_error("The socket file path is too long (> %lu): %s",
sizeof(UNIXaddr.sun_path) - 1, mysqld_unix_port); sizeof(UNIXaddr.sun_path) - 1, mysqld_unix_port);
unireg_abort(1); unireg_abort(1);
} }
...@@ -2912,7 +2912,7 @@ static void openssl_lock(int mode, openssl_lock_t *lock, const char *file, ...@@ -2912,7 +2912,7 @@ static void openssl_lock(int mode, openssl_lock_t *lock, const char *file,
} }
if (err) if (err)
{ {
sql_print_error("Fatal: can't %s OpenSSL %s lock", what); sql_print_error("Fatal: can't %s OpenSSL lock", what);
abort(); abort();
} }
} }
...@@ -7042,14 +7042,15 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -7042,14 +7042,15 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
exit(1); exit(1);
} }
switch (method-1) { switch (method-1) {
case 0: case 2:
method_conv= MI_STATS_METHOD_NULLS_NOT_EQUAL; method_conv= MI_STATS_METHOD_IGNORE_NULLS;
break; break;
case 1: case 1:
method_conv= MI_STATS_METHOD_NULLS_EQUAL; method_conv= MI_STATS_METHOD_NULLS_EQUAL;
break; break;
case 2: case 0:
method_conv= MI_STATS_METHOD_IGNORE_NULLS; default:
method_conv= MI_STATS_METHOD_NULLS_NOT_EQUAL;
break; break;
} }
global_system_variables.myisam_stats_method= method_conv; global_system_variables.myisam_stats_method= method_conv;
......
...@@ -5559,8 +5559,9 @@ void SEL_ARG::test_use_count(SEL_ARG *root) ...@@ -5559,8 +5559,9 @@ void SEL_ARG::test_use_count(SEL_ARG *root)
ulong count=count_key_part_usage(root,pos->next_key_part); ulong count=count_key_part_usage(root,pos->next_key_part);
if (count > pos->next_key_part->use_count) if (count > pos->next_key_part->use_count)
{ {
sql_print_information("Use_count: Wrong count for key at 0x%lx, %lu should be %lu", sql_print_information("Use_count: Wrong count for key at 0x%lx, %lu "
pos,pos->next_key_part->use_count,count); "should be %lu", (long unsigned int)pos,
pos->next_key_part->use_count, count);
return; return;
} }
pos->next_key_part->test_use_count(root); pos->next_key_part->test_use_count(root);
...@@ -5568,7 +5569,7 @@ void SEL_ARG::test_use_count(SEL_ARG *root) ...@@ -5568,7 +5569,7 @@ void SEL_ARG::test_use_count(SEL_ARG *root)
} }
if (e_count != elements) if (e_count != elements)
sql_print_warning("Wrong use count: %u (should be %u) for tree at 0x%lx", sql_print_warning("Wrong use count: %u (should be %u) for tree at 0x%lx",
e_count, elements, (gptr) this); e_count, elements, (long unsigned int) this);
} }
#endif #endif
......
...@@ -1255,8 +1255,8 @@ static void fix_tx_isolation(THD *thd, enum_var_type type) ...@@ -1255,8 +1255,8 @@ static void fix_tx_isolation(THD *thd, enum_var_type type)
thd->variables.tx_isolation); thd->variables.tx_isolation);
} }
static void fix_completion_type(THD *thd __attribute__(unused), static void fix_completion_type(THD *thd __attribute__((unused)),
enum_var_type type __attribute__(unused)) {} enum_var_type type __attribute__((unused))) {}
static int check_completion_type(THD *thd, set_var *var) static int check_completion_type(THD *thd, set_var *var)
{ {
...@@ -1295,14 +1295,14 @@ static void fix_net_retry_count(THD *thd, enum_var_type type) ...@@ -1295,14 +1295,14 @@ static void fix_net_retry_count(THD *thd, enum_var_type type)
thd->net.retry_count=thd->variables.net_retry_count; thd->net.retry_count=thd->variables.net_retry_count;
} }
#else /* HAVE_REPLICATION */ #else /* HAVE_REPLICATION */
static void fix_net_read_timeout(THD *thd __attribute__(unused), static void fix_net_read_timeout(THD *thd __attribute__((unused)),
enum_var_type type __attribute__(unused)) enum_var_type type __attribute__((unused)))
{} {}
static void fix_net_write_timeout(THD *thd __attribute__(unused), static void fix_net_write_timeout(THD *thd __attribute__((unused)),
enum_var_type type __attribute__(unused)) enum_var_type type __attribute__((unused)))
{} {}
static void fix_net_retry_count(THD *thd __attribute__(unused), static void fix_net_retry_count(THD *thd __attribute__((unused)),
enum_var_type type __attribute__(unused)) enum_var_type type __attribute__((unused)))
{} {}
#endif /* HAVE_REPLICATION */ #endif /* HAVE_REPLICATION */
......
...@@ -4613,7 +4613,7 @@ static int connect_to_master(THD* thd, MYSQL* mysql, MASTER_INFO* mi, ...@@ -4613,7 +4613,7 @@ static int connect_to_master(THD* thd, MYSQL* mysql, MASTER_INFO* mi,
suppress_warnings= 0; suppress_warnings= 0;
sql_print_error("Slave I/O thread: error %s to master \ sql_print_error("Slave I/O thread: error %s to master \
'%s@%s:%d': \ '%s@%s:%d': \
Error: '%s' errno: %d retry-time: %d retries: %d", Error: '%s' errno: %d retry-time: %d retries: %lu",
(reconnect ? "reconnecting" : "connecting"), (reconnect ? "reconnecting" : "connecting"),
mi->user,mi->host,mi->port, mi->user,mi->host,mi->port,
mysql_error(mysql), last_errno, mysql_error(mysql), last_errno,
......
...@@ -553,7 +553,8 @@ void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited); ...@@ -553,7 +553,8 @@ void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited);
const char *print_slave_db_safe(const char *db); const char *print_slave_db_safe(const char *db);
int check_expected_error(THD* thd, RELAY_LOG_INFO* rli, int error_code); int check_expected_error(THD* thd, RELAY_LOG_INFO* rli, int error_code);
void skip_load_data_infile(NET* net); void skip_load_data_infile(NET* net);
void slave_print_error(RELAY_LOG_INFO* rli, int err_code, const char* msg, ...); void slave_print_error(RELAY_LOG_INFO *rli, int err_code, const char *msg, ...)
ATTRIBUTE_FORMAT(printf, 3, 4);
void end_slave(); /* clean up */ void end_slave(); /* clean up */
void init_master_info_with_options(MASTER_INFO* mi); void init_master_info_with_options(MASTER_INFO* mi);
......
...@@ -306,7 +306,7 @@ class MYSQL_LOG: public TC_LOG ...@@ -306,7 +306,7 @@ class MYSQL_LOG: public TC_LOG
const char *log_name); const char *log_name);
void new_file(bool need_lock); void new_file(bool need_lock);
bool write(THD *thd, enum enum_server_command command, bool write(THD *thd, enum enum_server_command command,
const char *format,...); const char *format, ...) ATTRIBUTE_FORMAT(printf, 4, 5);
bool write(THD *thd, const char *query, uint query_length, bool write(THD *thd, const char *query, uint query_length,
time_t query_start=0); time_t query_start=0);
bool write(Log_event* event_info); // binary log write bool write(Log_event* event_info); // binary log write
......
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