Commit d93806ef authored by unknown's avatar unknown

Fix warnings from icc

Added BUILD scripts for icc
Fixed (one time) memory leak in grant handling


config/ac-macros/misc.m4:
  Remove warnings flags from icc when compiling with -Werror
configure.in:
  Remove warnings flags from icc when compiling with -Werror
extra/replace.c:
  Fix warnings from icc
include/my_dbug.h:
  Fix warnings from icc
sql/gen_lex_hash.cc:
  Fix warnings from icc
sql/mysql_priv.h:
  Add missing variables
sql/mysqld.cc:
  Fix warnings from icc:
  - made a lot of variables static
  - Removing some not used variables
  - Fixed wrong printf()
  - removed extern "C" from some functions
sql/spatial.h:
  Fix warnings from icc
sql/sql_acl.cc:
  Fixed memory leak
sql/sql_lex.cc:
  Fix warnings from icc
sql/sql_lex.h:
  Fix warnings from icc
parent 880bff92
#! /bin/sh
path=`dirname $0`
. "$path/SETUP.sh"
# Note that we can't use ccache with icc as the generated .deps file will
# then contain wrong information
CC=icc
CXX=icpc
CXXLD="$CXX -static-libcxa"
export CC CXX
extra_flags="$pentium_cflags $debug_cflags $max_cflags -USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max"
# Disable following warnings as these are generated by header files:
# 161 unrecognized pragma
# 444 destructor for base class xxx is not virtual
# 279 controlling expression is constant
# 810 conversion from ulonglong to ulong with cast
# 981 operands are evaluated in unspecified order
# 1292 warning for unknown 'attribute' options
# 1469 "xxx" clobber ignored
# 1572 floating-point equality and inequality comparisons are unreliable
# In C++
# 869 parameter "xxx" was never referenced
# (Problem with virtual functions)
# 874 support for placement delete is disabled
c_warnings=""
cxx_warnings=""
extra_flags="-O3 -unroll2 -ip -mp -no-gcc -restrict"
base_cxxflags="-fno-exceptions -fno-rtti"
extra_configs="$pentium_configs $static_link"
. "$path/FINISH.sh"
#! /bin/sh
path=`dirname $0`
. "$path/SETUP.sh"
# Note that we can't use ccache with icc as the generated .deps file will
# then contain wrong information
CC=icc
CXX=icpc
export CC CXX
extra_flags="$pentium_cflags $debug_cflags $max_cflags -USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max"
# Disable following warnings as these are generated by header files:
# 161 unrecognized pragma
# 444 destructor for base class xxx is not virtual
# 279 controlling expression is constant
# 810 conversion from ulonglong to ulong with cast
# 981 operands are evaluated in unspecified order
# 1292 warning for unknown 'attribute' options
# 1469 "xxx" clobber ignored
# 1572 floating-point equality and inequality comparisons are unreliable
# In C++
# 869 parameter "xxx" was never referenced
# (Problem with virtual functions)
# 874 support for placement delete is disabled
c_warnings="-Wall -Wcheck -wd161,444,279,810,981,1292,1469,1572"
cxx_warnings="$c_warnings -wd869,874"
base_cxxflags="-fno-exceptions -fno-rtti"
extra_configs="$pentium_configs $debug_configs"
. "$path/FINISH.sh"
...@@ -38,7 +38,7 @@ AC_LANG_PUSH(C++) ...@@ -38,7 +38,7 @@ AC_LANG_PUSH(C++)
if test "$ac_cv_prog_gxx" = "yes" if test "$ac_cv_prog_gxx" = "yes"
then then
# Add -Werror, remove -fbranch-probabilities (Bug #268) # Add -Werror, remove -fbranch-probabilities (Bug #268)
CXXFLAGS=`echo $CXXFLAGS -Werror | sed 's/-fbranch-probabilities//'` CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-Wcheck//'`
fi fi
mysql_cv_btype_last_arg_accept=none mysql_cv_btype_last_arg_accept=none
[AC_TRY_COMPILE([#if defined(inline) [AC_TRY_COMPILE([#if defined(inline)
...@@ -98,7 +98,7 @@ AC_LANG_PUSH(C++) ...@@ -98,7 +98,7 @@ AC_LANG_PUSH(C++)
if test "$ac_cv_prog_gxx" = "yes" if test "$ac_cv_prog_gxx" = "yes"
then then
# Add -Werror, remove -fbranch-probabilities (Bug #268) # Add -Werror, remove -fbranch-probabilities (Bug #268)
CXXFLAGS=`echo $CXXFLAGS -Werror | sed 's/-fbranch-probabilities//'` CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-Wcheck//'`
fi fi
mysql_cv_btype_struct_rlimit=none mysql_cv_btype_struct_rlimit=none
[AC_TRY_COMPILE([#if defined(inline) [AC_TRY_COMPILE([#if defined(inline)
......
...@@ -1965,9 +1965,12 @@ AC_LANG_CPLUSPLUS ...@@ -1965,9 +1965,12 @@ AC_LANG_CPLUSPLUS
# with respect to ANSI C++ # with respect to ANSI C++
# We also remove the -fbranch-probabilities option as this will give warnings # We also remove the -fbranch-probabilities option as this will give warnings
# about not profiled code, which confuses configure # about not profiled code, which confuses configure
# We also must remove -W and -Wcheck which on icc produces warnings that
# we don't want to catch with -Werror
if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no"
then then
CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-Wcheck//'`
fi fi
AC_TRY_COMPILE( AC_TRY_COMPILE(
...@@ -2002,7 +2005,7 @@ AC_LANG_SAVE ...@@ -2002,7 +2005,7 @@ AC_LANG_SAVE
AC_LANG_CPLUSPLUS AC_LANG_CPLUSPLUS
if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no"
then then
CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-Wcheck//'`
fi fi
AC_TRY_COMPILE( AC_TRY_COMPILE(
[#undef inline [#undef inline
...@@ -2035,7 +2038,7 @@ AC_LANG_SAVE ...@@ -2035,7 +2038,7 @@ AC_LANG_SAVE
AC_LANG_CPLUSPLUS AC_LANG_CPLUSPLUS
if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no"
then then
CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed -e 's/-fbranch-probabilities//; s/-Wall//; s/-Wcheck//'`
fi fi
AC_TRY_COMPILE( AC_TRY_COMPILE(
[#undef inline [#undef inline
......
...@@ -63,7 +63,7 @@ typedef struct st_pointer_array { /* when using array-strings */ ...@@ -63,7 +63,7 @@ typedef struct st_pointer_array { /* when using array-strings */
#define LAST_CHAR_CODE 259 #define LAST_CHAR_CODE 259
typedef struct st_replace { typedef struct st_replace {
bool found; my_bool found;
struct st_replace *next[256]; struct st_replace *next[256];
} REPLACE; } REPLACE;
...@@ -80,18 +80,17 @@ typedef struct st_replace_found { ...@@ -80,18 +80,17 @@ typedef struct st_replace_found {
/* functions defined in this file */ /* functions defined in this file */
extern int main(int argc,char * *argv);
static int static_get_options(int *argc,char * * *argv); static int static_get_options(int *argc,char * * *argv);
static int get_replace_strings(int *argc,char * * *argv, static int get_replace_strings(int *argc,char * * *argv,
POINTER_ARRAY *from_array, POINTER_ARRAY *from_array,
POINTER_ARRAY *to_array); POINTER_ARRAY *to_array);
int insert_pointer_name(POINTER_ARRAY *pa, my_string name); static int insert_pointer_name(POINTER_ARRAY *pa, my_string name);
void free_pointer_array(POINTER_ARRAY *pa); static void free_pointer_array(POINTER_ARRAY *pa);
static int convert_pipe(REPLACE *,FILE *,FILE *); static int convert_pipe(REPLACE *,FILE *,FILE *);
static int convert_file(REPLACE *, my_string); static int convert_file(REPLACE *, my_string);
REPLACE *init_replace(my_string *from, my_string *to,uint count, my_string static REPLACE *init_replace(my_string *from, my_string *to,uint count,
word_end_chars); my_string word_end_chars);
uint replace_strings(REPLACE *rep, my_string *start,uint *max_length, static uint replace_strings(REPLACE *rep, my_string *start,uint *max_length,
my_string from); my_string from);
static int initialize_buffer(void); static int initialize_buffer(void);
static void reset_buffer(void); static void reset_buffer(void);
...@@ -101,9 +100,7 @@ static int silent=0,verbose=0,updated=0; ...@@ -101,9 +100,7 @@ static int silent=0,verbose=0,updated=0;
/* The main program */ /* The main program */
int main(argc,argv) int main(int argc, char *argv[])
int argc;
char *argv[];
{ {
int i,error; int i,error;
char word_end_chars[256],*pos; char word_end_chars[256],*pos;
...@@ -118,7 +115,7 @@ char *argv[]; ...@@ -118,7 +115,7 @@ char *argv[];
for (i=1,pos=word_end_chars ; i < 256 ; i++) for (i=1,pos=word_end_chars ; i < 256 ; i++)
if (my_isspace(&my_charset_latin1,i)) if (my_isspace(&my_charset_latin1,i))
*pos++=i; *pos++= (char) i;
*pos=0; *pos=0;
if (!(replace=init_replace((char**) from.typelib.type_names, if (!(replace=init_replace((char**) from.typelib.type_names,
(char**) to.typelib.type_names, (char**) to.typelib.type_names,
...@@ -153,7 +150,7 @@ static int static_get_options(argc,argv) ...@@ -153,7 +150,7 @@ static int static_get_options(argc,argv)
register int *argc; register int *argc;
register char **argv[]; register char **argv[];
{ {
int help,version,opt; int help,version;
char *pos; char *pos;
silent=verbose=help=0; silent=verbose=help=0;
...@@ -162,7 +159,7 @@ register char **argv[]; ...@@ -162,7 +159,7 @@ register char **argv[];
while (*++pos) while (*++pos)
{ {
version=0; version=0;
switch((opt= *pos)) { switch((*pos)) {
case 's': case 's':
silent=1; silent=1;
break; break;
...@@ -249,7 +246,7 @@ POINTER_ARRAY *from_array,*to_array; ...@@ -249,7 +246,7 @@ POINTER_ARRAY *from_array,*to_array;
return 0; return 0;
} }
int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name) static int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name)
{ {
uint i,length,old_count; uint i,length,old_count;
byte *new_pos; byte *new_pos;
...@@ -323,8 +320,7 @@ int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name) ...@@ -323,8 +320,7 @@ int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name)
/* free pointer array */ /* free pointer array */
void free_pointer_array(pa) static void free_pointer_array(reg1 POINTER_ARRAY *pa)
reg1 POINTER_ARRAY *pa;
{ {
if (pa->typelib.count) if (pa->typelib.count)
{ {
...@@ -382,8 +378,8 @@ static void or_bits(REP_SET *to,REP_SET *from); ...@@ -382,8 +378,8 @@ static void or_bits(REP_SET *to,REP_SET *from);
static void copy_bits(REP_SET *to,REP_SET *from); static void copy_bits(REP_SET *to,REP_SET *from);
static int cmp_bits(REP_SET *set1,REP_SET *set2); static int cmp_bits(REP_SET *set1,REP_SET *set2);
static int get_next_bit(REP_SET *set,uint lastpos); static int get_next_bit(REP_SET *set,uint lastpos);
static int find_set(REP_SETS *sets,REP_SET *find); static short find_set(REP_SETS *sets,REP_SET *find);
static int find_found(FOUND_SET *found_set,uint table_offset, static short find_found(FOUND_SET *found_set,uint table_offset,
int found_offset); int found_offset);
static uint start_at_word(my_string pos); static uint start_at_word(my_string pos);
static uint end_of_word(my_string pos); static uint end_of_word(my_string pos);
...@@ -394,11 +390,12 @@ static uint found_sets=0; ...@@ -394,11 +390,12 @@ static uint found_sets=0;
/* Init a replace structure for further calls */ /* Init a replace structure for further calls */
REPLACE *init_replace(my_string *from, my_string *to,uint count, static REPLACE *init_replace(my_string *from, my_string *to,uint count,
my_string word_end_chars) my_string word_end_chars)
{ {
uint i,j,states,set_nr,len,result_len,max_length,found_end,bits_set,bit_nr; uint i,j,states,set_nr,len,result_len,max_length,found_end,bits_set,bit_nr;
int used_sets,chr,default_state; int used_sets,chr;
short default_state;
char used_chars[LAST_CHAR_CODE],is_word_end[256]; char used_chars[LAST_CHAR_CODE],is_word_end[256];
my_string pos,to_pos,*to_array; my_string pos,to_pos,*to_array;
REP_SETS sets; REP_SETS sets;
...@@ -561,7 +558,7 @@ REPLACE *init_replace(my_string *from, my_string *to,uint count, ...@@ -561,7 +558,7 @@ REPLACE *init_replace(my_string *from, my_string *to,uint count,
for (chr= 0 ; chr < 256 ; chr++) for (chr= 0 ; chr < 256 ; chr++)
{ {
if (! used_chars[chr]) if (! used_chars[chr])
set->next[chr]= chr ? default_state : -1; set->next[chr]= (short) (chr ? default_state : -1);
else else
{ {
new_set=make_new_set(&sets); new_set=make_new_set(&sets);
...@@ -652,7 +649,7 @@ REPLACE *init_replace(my_string *from, my_string *to,uint count, ...@@ -652,7 +649,7 @@ REPLACE *init_replace(my_string *from, my_string *to,uint count,
for (i=1 ; i <= found_sets ; i++) for (i=1 ; i <= found_sets ; i++)
{ {
pos=from[found_set[i-1].table_offset]; pos=from[found_set[i-1].table_offset];
rep_str[i].found= !bcmp(pos,"\\^",3) ? 2 : 1; rep_str[i].found= (my_bool) (!bcmp(pos,"\\^",3) ? 2 : 1);
rep_str[i].replace_string=to_array[found_set[i-1].table_offset]; rep_str[i].replace_string=to_array[found_set[i-1].table_offset];
rep_str[i].to_offset=found_set[i-1].found_offset-start_at_word(pos); rep_str[i].to_offset=found_set[i-1].found_offset-start_at_word(pos);
rep_str[i].from_offset=found_set[i-1].found_offset-replace_len(pos)+ rep_str[i].from_offset=found_set[i-1].found_offset-replace_len(pos)+
...@@ -812,7 +809,7 @@ static int get_next_bit(REP_SET *set,uint lastpos) ...@@ -812,7 +809,7 @@ static int get_next_bit(REP_SET *set,uint lastpos)
free given set, else put in given set in sets and return it's free given set, else put in given set in sets and return it's
position */ position */
static int find_set(REP_SETS *sets,REP_SET *find) static short find_set(REP_SETS *sets,REP_SET *find)
{ {
uint i; uint i;
for (i=0 ; i < sets->count-1 ; i++) for (i=0 ; i < sets->count-1 ; i++)
...@@ -820,30 +817,33 @@ static int find_set(REP_SETS *sets,REP_SET *find) ...@@ -820,30 +817,33 @@ static int find_set(REP_SETS *sets,REP_SET *find)
if (!cmp_bits(sets->set+i,find)) if (!cmp_bits(sets->set+i,find))
{ {
free_last_set(sets); free_last_set(sets);
return i; return (short) i;
} }
} }
return i; /* return new postion */ return (short) i; /* return new postion */
} }
/* find if there is a found_set with same table_offset & found_offset
/*
find if there is a found_set with same table_offset & found_offset
If there is return offset to it, else add new offset and return pos. If there is return offset to it, else add new offset and return pos.
Pos returned is -offset-2 in found_set_structure because it's is Pos returned is -offset-2 in found_set_structure because it's is
saved in set->next and set->next[] >= 0 points to next set and saved in set->next and set->next[] >= 0 points to next set and
set->next[] == -1 is reserved for end without replaces. set->next[] == -1 is reserved for end without replaces.
*/ */
static int find_found(FOUND_SET *found_set,uint table_offset, int found_offset) static short find_found(FOUND_SET *found_set,uint table_offset,
int found_offset)
{ {
int i; int i;
for (i=0 ; (uint) i < found_sets ; i++) for (i=0 ; (uint) i < found_sets ; i++)
if (found_set[i].table_offset == table_offset && if (found_set[i].table_offset == table_offset &&
found_set[i].found_offset == found_offset) found_set[i].found_offset == found_offset)
return -i-2; return (short) (-i-2);
found_set[i].table_offset=table_offset; found_set[i].table_offset=table_offset;
found_set[i].found_offset=found_offset; found_set[i].found_offset=found_offset;
found_sets++; found_sets++;
return -i-2; /* return new postion */ return (short) (-i-2); /* return new postion */
} }
/* Return 1 if regexp starts with \b or ends with \b*/ /* Return 1 if regexp starts with \b or ends with \b*/
...@@ -878,7 +878,8 @@ static uint replace_len(my_string str) ...@@ -878,7 +878,8 @@ static uint replace_len(my_string str)
/* The actual loop */ /* The actual loop */
uint replace_strings(REPLACE *rep, my_string *start,uint *max_length, my_string from) static uint replace_strings(REPLACE *rep, my_string *start,uint *max_length,
my_string from)
{ {
reg1 REPLACE *rep_pos; reg1 REPLACE *rep_pos;
reg2 REPLACE_STRING *rep_str; reg2 REPLACE_STRING *rep_str;
......
...@@ -39,9 +39,9 @@ extern void _db_pargs_(uint _line_,const char *keyword); ...@@ -39,9 +39,9 @@ extern void _db_pargs_(uint _line_,const char *keyword);
extern void _db_doprnt_ _VARARGS((const char *format,...)); extern void _db_doprnt_ _VARARGS((const char *format,...));
extern void _db_dump_(uint _line_,const char *keyword,const char *memory, extern void _db_dump_(uint _line_,const char *keyword,const char *memory,
uint length); uint length);
extern void _db_output_(); extern void _db_output_(void);
extern void _db_lock_file(); extern void _db_lock_file(void);
extern void _db_unlock_file(); extern void _db_unlock_file(void);
#define DBUG_ENTER(a) const char *_db_func_, *_db_file_; uint _db_level_; \ #define DBUG_ENTER(a) const char *_db_func_, *_db_file_; uint _db_level_; \
char **_db_framep_; \ char **_db_framep_; \
......
...@@ -300,7 +300,7 @@ void print_hash_map(const char *name) ...@@ -300,7 +300,7 @@ void print_hash_map(const char *name)
char *cur; char *cur;
int i; int i;
printf("uchar %s[%d]= {\n",name,size_hash_map); printf("static uchar %s[%d]= {\n",name,size_hash_map);
for (i=0, cur= hash_map; i<size_hash_map; i++, cur++) for (i=0, cur= hash_map; i<size_hash_map; i++, cur++)
{ {
switch(i%4){ switch(i%4){
...@@ -459,11 +459,11 @@ int main(int argc,char **argv) ...@@ -459,11 +459,11 @@ int main(int argc,char **argv)
generate_find_structs(); generate_find_structs();
print_find_structs(); print_find_structs();
printf("\nunsigned int sql_functions_max_len=%d;\n",max_len); printf("\static unsigned int sql_functions_max_len=%d;\n",max_len);
printf("\nunsigned int symbols_max_len=%d;\n\n",max_len2); printf("\static unsigned int symbols_max_len=%d;\n\n",max_len2);
printf("\ printf("\
inline SYMBOL *get_hash_symbol(const char *s,\n \ static inline SYMBOL *get_hash_symbol(const char *s,\n\
unsigned int len,bool function)\n\ unsigned int len,bool function)\n\
{\n\ {\n\
register uchar *hash_map;\n\ register uchar *hash_map;\n\
......
...@@ -1113,7 +1113,8 @@ extern pthread_mutex_t LOCK_mysql_create_db,LOCK_Acl,LOCK_open, ...@@ -1113,7 +1113,8 @@ extern pthread_mutex_t LOCK_mysql_create_db,LOCK_Acl,LOCK_open,
LOCK_error_log, LOCK_delayed_insert, LOCK_uuid_generator, LOCK_error_log, LOCK_delayed_insert, LOCK_uuid_generator,
LOCK_delayed_status, LOCK_delayed_create, LOCK_crypt, LOCK_timezone, LOCK_delayed_status, LOCK_delayed_create, LOCK_crypt, LOCK_timezone,
LOCK_slave_list, LOCK_active_mi, LOCK_manager, LOCK_global_read_lock, LOCK_slave_list, LOCK_active_mi, LOCK_manager, LOCK_global_read_lock,
LOCK_global_system_variables, LOCK_user_conn; LOCK_global_system_variables, LOCK_user_conn,
LOCK_bytes_sent, LOCK_bytes_received;
extern rw_lock_t LOCK_grant, LOCK_sys_init_connect, LOCK_sys_init_slave; extern rw_lock_t LOCK_grant, LOCK_sys_init_connect, LOCK_sys_init_slave;
extern pthread_cond_t COND_refresh, COND_thread_count, COND_manager; extern pthread_cond_t COND_refresh, COND_thread_count, COND_manager;
extern pthread_attr_t connection_attrib; extern pthread_attr_t connection_attrib;
......
...@@ -223,7 +223,7 @@ extern "C" int gethostname(char *name, int namelen); ...@@ -223,7 +223,7 @@ extern "C" int gethostname(char *name, int namelen);
/* Constants */ /* Constants */
const char *show_comp_option_name[]= {"YES", "NO", "DISABLED"}; const char *show_comp_option_name[]= {"YES", "NO", "DISABLED"};
const char *sql_mode_names[] = static const char *sql_mode_names[] =
{ {
"REAL_AS_FLOAT", "PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE", "REAL_AS_FLOAT", "PIPES_AS_CONCAT", "ANSI_QUOTES", "IGNORE_SPACE",
"?", "ONLY_FULL_GROUP_BY", "NO_UNSIGNED_SUBTRACTION", "?", "ONLY_FULL_GROUP_BY", "NO_UNSIGNED_SUBTRACTION",
...@@ -237,10 +237,15 @@ const char *sql_mode_names[] = ...@@ -237,10 +237,15 @@ const char *sql_mode_names[] =
}; };
TYPELIB sql_mode_typelib= { array_elements(sql_mode_names)-1,"", TYPELIB sql_mode_typelib= { array_elements(sql_mode_names)-1,"",
sql_mode_names, NULL }; sql_mode_names, NULL };
const char *tc_heuristic_recover_names[]= { "COMMIT", "ROLLBACK", NullS }; static const char *tc_heuristic_recover_names[]=
TYPELIB tc_heuristic_recover_typelib= {
{ array_elements(tc_heuristic_recover_names)-1,"", "COMMIT", "ROLLBACK", NullS
tc_heuristic_recover_names, NULL }; };
static TYPELIB tc_heuristic_recover_typelib=
{
array_elements(tc_heuristic_recover_names)-1,"",
tc_heuristic_recover_names, NULL
};
const char *first_keyword= "first", *binary_keyword= "BINARY"; const char *first_keyword= "first", *binary_keyword= "BINARY";
const char *my_localhost= "localhost", *delayed_user= "DELAYED"; const char *my_localhost= "localhost", *delayed_user= "DELAYED";
#if SIZEOF_OFF_T > 4 && defined(BIG_TABLES) #if SIZEOF_OFF_T > 4 && defined(BIG_TABLES)
...@@ -254,8 +259,7 @@ bool opt_large_files= sizeof(my_off_t) > 4; ...@@ -254,8 +259,7 @@ bool opt_large_files= sizeof(my_off_t) > 4;
/* /*
Used with --help for detailed option Used with --help for detailed option
*/ */
bool opt_help= 0; static bool opt_help= 0, opt_verbose= 0;
bool opt_verbose= 0;
arg_cmp_func Arg_comparator::comparator_matrix[5][2] = arg_cmp_func Arg_comparator::comparator_matrix[5][2] =
{{&Arg_comparator::compare_string, &Arg_comparator::compare_e_string}, {{&Arg_comparator::compare_string, &Arg_comparator::compare_e_string},
...@@ -264,27 +268,55 @@ arg_cmp_func Arg_comparator::comparator_matrix[5][2] = ...@@ -264,27 +268,55 @@ arg_cmp_func Arg_comparator::comparator_matrix[5][2] =
{&Arg_comparator::compare_row, &Arg_comparator::compare_e_row}, {&Arg_comparator::compare_row, &Arg_comparator::compare_e_row},
{&Arg_comparator::compare_decimal, &Arg_comparator::compare_e_decimal}}; {&Arg_comparator::compare_decimal, &Arg_comparator::compare_e_decimal}};
/* static variables */
static bool lower_case_table_names_used= 0;
static bool volatile select_thread_in_use, signal_thread_in_use;
static bool volatile ready_to_exit;
static my_bool opt_debugging= 0, opt_external_locking= 0, opt_console= 0;
static my_bool opt_bdb, opt_isam, opt_ndbcluster;
static my_bool opt_short_log_format= 0;
static my_bool opt_log_queries_not_using_indexes= 0;
static uint kill_cached_threads, wake_thread;
static ulong killed_threads, thread_created;
static ulong max_used_connections;
static ulong my_bind_addr; /* the address we bind to */
static volatile ulong cached_thread_count= 0;
static const char *sql_mode_str= "OFF";
static char *mysqld_user, *mysqld_chroot, *log_error_file_ptr;
static char *opt_init_slave, *language_ptr, *opt_init_connect;
static char *default_character_set_name;
static char *my_bind_addr_str;
static char *default_collation_name;
static char mysql_data_home_buff[2];
static struct passwd *user_info;
static I_List<THD> thread_cache;
static pthread_cond_t COND_thread_cache, COND_flush_thread_cache;
#ifdef HAVE_BERKLEY_DB
static my_bool opt_sync_bdb_logs;
#endif
/* Global variables */ /* Global variables */
bool opt_log, opt_update_log, opt_bin_log, opt_slow_log; bool opt_log, opt_update_log, opt_bin_log, opt_slow_log;
bool opt_error_log= IF_WIN(1,0); bool opt_error_log= IF_WIN(1,0);
bool opt_disable_networking=0, opt_skip_show_db=0; bool opt_disable_networking=0, opt_skip_show_db=0;
bool lower_case_table_names_used= 0;
bool server_id_supplied = 0; bool server_id_supplied = 0;
bool opt_endinfo,using_udf_functions, locked_in_memory; bool opt_endinfo,using_udf_functions, locked_in_memory;
bool opt_using_transactions, using_update_log; bool opt_using_transactions, using_update_log;
bool volatile abort_loop, select_thread_in_use, signal_thread_in_use; bool volatile abort_loop;
bool volatile ready_to_exit, shutdown_in_progress, grant_option; bool volatile shutdown_in_progress, grant_option;
my_bool opt_skip_slave_start = 0; // If set, slave is not autostarted my_bool opt_skip_slave_start = 0; // If set, slave is not autostarted
my_bool opt_reckless_slave = 0; my_bool opt_reckless_slave = 0;
my_bool opt_enable_named_pipe= 0, opt_debugging= 0; my_bool opt_enable_named_pipe= 0;
my_bool opt_local_infile, opt_external_locking, opt_slave_compressed_protocol; my_bool opt_local_infile, opt_slave_compressed_protocol;
my_bool opt_safe_user_create = 0, opt_no_mix_types = 0; my_bool opt_safe_user_create = 0, opt_no_mix_types = 0;
my_bool opt_show_slave_auth_info, opt_sql_bin_update = 0; my_bool opt_show_slave_auth_info, opt_sql_bin_update = 0;
my_bool opt_log_slave_updates= 0; my_bool opt_log_slave_updates= 0;
my_bool opt_console= 0, opt_bdb, opt_innodb, opt_isam, opt_ndbcluster; my_bool opt_innodb;
#ifdef HAVE_NDBCLUSTER_DB #ifdef HAVE_NDBCLUSTER_DB
const char *opt_ndbcluster_connectstring= 0; const char *opt_ndbcluster_connectstring= 0;
const char *opt_ndb_connectstring= 0; const char *opt_ndb_connectstring= 0;
...@@ -296,10 +328,8 @@ const char *opt_ndb_mgmd; ...@@ -296,10 +328,8 @@ const char *opt_ndb_mgmd;
ulong opt_ndb_nodeid; ulong opt_ndb_nodeid;
#endif #endif
my_bool opt_readonly, use_temp_pool, relay_log_purge; my_bool opt_readonly, use_temp_pool, relay_log_purge;
my_bool opt_sync_bdb_logs, opt_sync_frm, opt_allow_suspicious_udfs; my_bool opt_sync_frm, opt_allow_suspicious_udfs;
my_bool opt_secure_auth= 0; my_bool opt_secure_auth= 0;
my_bool opt_short_log_format= 0;
my_bool opt_log_queries_not_using_indexes= 0;
my_bool lower_case_file_system= 0; my_bool lower_case_file_system= 0;
my_bool opt_large_pages= 0; my_bool opt_large_pages= 0;
uint opt_large_page_size= 0; uint opt_large_page_size= 0;
...@@ -319,7 +349,7 @@ uint mysqld_port, test_flags, select_errors, dropping_tables, ha_open_options; ...@@ -319,7 +349,7 @@ uint mysqld_port, test_flags, select_errors, dropping_tables, ha_open_options;
uint delay_key_write_options, protocol_version; uint delay_key_write_options, protocol_version;
uint lower_case_table_names; uint lower_case_table_names;
uint tc_heuristic_recover= 0; uint tc_heuristic_recover= 0;
uint volatile thread_count, thread_running, kill_cached_threads, wake_thread; uint volatile thread_count, thread_running;
ulong back_log, connect_timeout, concurrency; ulong back_log, connect_timeout, concurrency;
ulong server_id, thd_startup_options; ulong server_id, thd_startup_options;
ulong table_cache_size, thread_stack, thread_stack_min, what_to_log; ulong table_cache_size, thread_stack, thread_stack_min, what_to_log;
...@@ -330,21 +360,18 @@ ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0; ...@@ -330,21 +360,18 @@ ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0;
ulong query_cache_size=0; ulong query_cache_size=0;
ulong refresh_version, flush_version; /* Increments on each reload */ ulong refresh_version, flush_version; /* Increments on each reload */
query_id_t query_id; query_id_t query_id;
ulong aborted_threads, killed_threads, aborted_connects; ulong aborted_threads, aborted_connects;
ulong delayed_insert_timeout, delayed_insert_limit, delayed_queue_size; ulong delayed_insert_timeout, delayed_insert_limit, delayed_queue_size;
ulong delayed_insert_threads, delayed_insert_writes, delayed_rows_in_use; ulong delayed_insert_threads, delayed_insert_writes, delayed_rows_in_use;
ulong delayed_insert_errors,flush_time, thread_created; ulong delayed_insert_errors,flush_time;
ulong specialflag=0; ulong specialflag=0;
ulong binlog_cache_use= 0, binlog_cache_disk_use= 0; ulong binlog_cache_use= 0, binlog_cache_disk_use= 0;
ulong max_connections,max_used_connections, ulong max_connections, max_connect_errors;
max_connect_errors;
uint max_user_connections= 0; uint max_user_connections= 0;
ulong thread_id=1L,current_pid; ulong thread_id=1L,current_pid;
ulong slow_launch_threads = 0, sync_binlog_period; ulong slow_launch_threads = 0, sync_binlog_period;
ulong expire_logs_days = 0; ulong expire_logs_days = 0;
ulong rpl_recovery_rank=0; ulong rpl_recovery_rank=0;
ulong my_bind_addr; /* the address we bind to */
volatile ulong cached_thread_count= 0;
double last_query_cost= -1; /* -1 denotes that no query was compiled yet */ double last_query_cost= -1; /* -1 denotes that no query was compiled yet */
double log_10[32]; /* 10 potences */ double log_10[32]; /* 10 potences */
...@@ -353,24 +380,18 @@ time_t start_time; ...@@ -353,24 +380,18 @@ time_t start_time;
char mysql_home[FN_REFLEN], pidfile_name[FN_REFLEN], system_time_zone[30]; char mysql_home[FN_REFLEN], pidfile_name[FN_REFLEN], system_time_zone[30];
char *default_tz_name; char *default_tz_name;
char log_error_file[FN_REFLEN], glob_hostname[FN_REFLEN]; char log_error_file[FN_REFLEN], glob_hostname[FN_REFLEN];
char* log_error_file_ptr= log_error_file;
char mysql_real_data_home[FN_REFLEN], char mysql_real_data_home[FN_REFLEN],
language[FN_REFLEN], reg_ext[FN_EXTLEN], mysql_charsets_dir[FN_REFLEN], language[FN_REFLEN], reg_ext[FN_EXTLEN], mysql_charsets_dir[FN_REFLEN],
*mysqld_user,*mysqld_chroot, *opt_init_file, *opt_init_file, *opt_tc_log_file,
*opt_init_connect, *opt_init_slave, *opt_tc_log_file,
def_ft_boolean_syntax[sizeof(ft_boolean_syntax)]; def_ft_boolean_syntax[sizeof(ft_boolean_syntax)];
const char *opt_date_time_formats[3]; const char *opt_date_time_formats[3];
char *language_ptr, *default_collation_name, *default_character_set_name; char *mysql_data_home= mysql_real_data_home;
char mysql_data_home_buff[2], *mysql_data_home=mysql_real_data_home;
struct passwd *user_info;
char server_version[SERVER_VERSION_LENGTH]; char server_version[SERVER_VERSION_LENGTH];
char *mysqld_unix_port, *opt_mysql_tmpdir; char *mysqld_unix_port, *opt_mysql_tmpdir;
char *my_bind_addr_str;
const char **errmesg; /* Error messages */ const char **errmesg; /* Error messages */
const char *myisam_recover_options_str="OFF"; const char *myisam_recover_options_str="OFF";
const char *sql_mode_str="OFF";
/* name of reference on left espression in rewritten IN subquery */ /* name of reference on left espression in rewritten IN subquery */
const char *in_left_expr_name= "<left expr>"; const char *in_left_expr_name= "<left expr>";
/* name of additional condition */ /* name of additional condition */
...@@ -392,7 +413,7 @@ I_List<i_string_pair> replicate_rewrite_db; ...@@ -392,7 +413,7 @@ I_List<i_string_pair> replicate_rewrite_db;
I_List<i_string> replicate_do_db, replicate_ignore_db; I_List<i_string> replicate_do_db, replicate_ignore_db;
// allow the user to tell us which db to replicate and which to ignore // allow the user to tell us which db to replicate and which to ignore
I_List<i_string> binlog_do_db, binlog_ignore_db; I_List<i_string> binlog_do_db, binlog_ignore_db;
I_List<THD> threads,thread_cache; I_List<THD> threads;
I_List<NAMED_LIST> key_caches; I_List<NAMED_LIST> key_caches;
struct system_variables global_system_variables; struct system_variables global_system_variables;
...@@ -425,9 +446,7 @@ pthread_mutex_t LOCK_mysql_create_db, LOCK_Acl, LOCK_open, LOCK_thread_count, ...@@ -425,9 +446,7 @@ pthread_mutex_t LOCK_mysql_create_db, LOCK_Acl, LOCK_open, LOCK_thread_count,
LOCK_global_system_variables, LOCK_global_system_variables,
LOCK_user_conn, LOCK_slave_list, LOCK_active_mi; LOCK_user_conn, LOCK_slave_list, LOCK_active_mi;
rw_lock_t LOCK_grant, LOCK_sys_init_connect, LOCK_sys_init_slave; rw_lock_t LOCK_grant, LOCK_sys_init_connect, LOCK_sys_init_slave;
pthread_cond_t COND_refresh,COND_thread_count, COND_slave_stopped, pthread_cond_t COND_refresh,COND_thread_count;
COND_slave_start;
pthread_cond_t COND_thread_cache,COND_flush_thread_cache;
pthread_t signal_thread; pthread_t signal_thread;
pthread_attr_t connection_attrib; pthread_attr_t connection_attrib;
...@@ -502,7 +521,7 @@ static const char* default_dbug_option; ...@@ -502,7 +521,7 @@ static const char* default_dbug_option;
char *libwrapName= NULL; char *libwrapName= NULL;
#endif #endif
#ifdef HAVE_QUERY_CACHE #ifdef HAVE_QUERY_CACHE
ulong query_cache_limit= 0; static ulong query_cache_limit= 0;
ulong query_cache_min_res_unit= QUERY_CACHE_MIN_RESULT_DATA_SIZE; ulong query_cache_min_res_unit= QUERY_CACHE_MIN_RESULT_DATA_SIZE;
Query_cache query_cache; Query_cache query_cache;
#endif #endif
...@@ -522,7 +541,7 @@ struct st_VioSSLAcceptorFd *ssl_acceptor_fd; ...@@ -522,7 +541,7 @@ struct st_VioSSLAcceptorFd *ssl_acceptor_fd;
/* Function declarations */ /* Function declarations */
static void start_signal_handler(void); static void start_signal_handler(void);
extern "C" pthread_handler_decl(signal_hand, arg); static pthread_handler_decl(signal_hand, arg);
static void mysql_init_variables(void); static void mysql_init_variables(void);
static void get_options(int argc,char **argv); static void get_options(int argc,char **argv);
static void set_server_version(void); static void set_server_version(void);
...@@ -558,8 +577,6 @@ static void close_connections(void) ...@@ -558,8 +577,6 @@ static void close_connections(void)
#ifdef EXTRA_DEBUG #ifdef EXTRA_DEBUG
int count=0; int count=0;
#endif #endif
THD *thd= current_thd;
DBUG_ENTER("close_connections"); DBUG_ENTER("close_connections");
/* Clear thread cache */ /* Clear thread cache */
...@@ -1916,12 +1933,12 @@ the problem, but since we have already crashed, something is definitely wrong\n\ ...@@ -1916,12 +1933,12 @@ the problem, but since we have already crashed, something is definitely wrong\n\
and this may fail.\n\n"); and this may fail.\n\n");
fprintf(stderr, "key_buffer_size=%lu\n", fprintf(stderr, "key_buffer_size=%lu\n",
(ulong) dflt_key_cache->key_cache_mem_size); (ulong) dflt_key_cache->key_cache_mem_size);
fprintf(stderr, "read_buffer_size=%ld\n", global_system_variables.read_buff_size); fprintf(stderr, "read_buffer_size=%ld\n", (long) global_system_variables.read_buff_size);
fprintf(stderr, "max_used_connections=%ld\n", max_used_connections); fprintf(stderr, "max_used_connections=%lu\n", max_used_connections);
fprintf(stderr, "max_connections=%ld\n", max_connections); fprintf(stderr, "max_connections=%lu\n", max_connections);
fprintf(stderr, "threads_connected=%d\n", thread_count); fprintf(stderr, "threads_connected=%u\n", thread_count);
fprintf(stderr, "It is possible that mysqld could use up to \n\ fprintf(stderr, "It is possible that mysqld could use up to \n\
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = %ld K\n\ key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = %lu K\n\
bytes of memory\n", ((ulong) dflt_key_cache->key_cache_mem_size + bytes of memory\n", ((ulong) dflt_key_cache->key_cache_mem_size +
(global_system_variables.read_buff_size + (global_system_variables.read_buff_size +
global_system_variables.sortbuff_size) * global_system_variables.sortbuff_size) *
...@@ -1952,7 +1969,7 @@ the thread stack. Please read http://www.mysql.com/doc/en/Linux.html\n\n", ...@@ -1952,7 +1969,7 @@ the thread stack. Please read http://www.mysql.com/doc/en/Linux.html\n\n",
fprintf(stderr, "Trying to get some variables.\n\ fprintf(stderr, "Trying to get some variables.\n\
Some pointers may be invalid and cause the dump to abort...\n"); Some pointers may be invalid and cause the dump to abort...\n");
safe_print_str("thd->query", thd->query, 1024); safe_print_str("thd->query", thd->query, 1024);
fprintf(stderr, "thd->thread_id=%ld\n", thd->thread_id); fprintf(stderr, "thd->thread_id=%lu\n", (ulong) thd->thread_id);
} }
fprintf(stderr, "\ fprintf(stderr, "\
The manual page at http://www.mysql.com/doc/en/Crashing.html contains\n\ The manual page at http://www.mysql.com/doc/en/Crashing.html contains\n\
...@@ -2098,7 +2115,7 @@ static void start_signal_handler(void) ...@@ -2098,7 +2115,7 @@ static void start_signal_handler(void)
/* This threads handles all signals and alarms */ /* This threads handles all signals and alarms */
/* ARGSUSED */ /* ARGSUSED */
extern "C" void *signal_hand(void *arg __attribute__((unused))) static void *signal_hand(void *arg __attribute__((unused)))
{ {
sigset_t set; sigset_t set;
int sig; int sig;
...@@ -2238,7 +2255,7 @@ static void check_data_home(const char *path) ...@@ -2238,7 +2255,7 @@ static void check_data_home(const char *path)
/* ARGSUSED */ /* ARGSUSED */
extern "C" int my_message_sql(uint error, const char *str, myf MyFlags) static int my_message_sql(uint error, const char *str, myf MyFlags)
{ {
THD *thd; THD *thd;
DBUG_ENTER("my_message_sql"); DBUG_ENTER("my_message_sql");
...@@ -2359,7 +2376,7 @@ extern "C" pthread_handler_decl(handle_shutdown,arg) ...@@ -2359,7 +2376,7 @@ extern "C" pthread_handler_decl(handle_shutdown,arg)
#endif #endif
const char *load_default_groups[]= { static const char *load_default_groups[]= {
#ifdef HAVE_NDBCLUSTER_DB #ifdef HAVE_NDBCLUSTER_DB
"mysql_cluster", "mysql_cluster",
#endif #endif
...@@ -2370,6 +2387,7 @@ static const int load_default_groups_sz= ...@@ -2370,6 +2387,7 @@ static const int load_default_groups_sz=
sizeof(load_default_groups)/sizeof(load_default_groups[0]); sizeof(load_default_groups)/sizeof(load_default_groups[0]);
#endif #endif
/* /*
Initialize one of the global date/time format variables Initialize one of the global date/time format variables
...@@ -2387,7 +2405,7 @@ sizeof(load_default_groups)/sizeof(load_default_groups[0]); ...@@ -2387,7 +2405,7 @@ sizeof(load_default_groups)/sizeof(load_default_groups[0]);
1 error 1 error
*/ */
bool init_global_datetime_format(timestamp_type format_type, static bool init_global_datetime_format(timestamp_type format_type,
DATE_TIME_FORMAT **var_ptr) DATE_TIME_FORMAT **var_ptr)
{ {
/* Get command line option */ /* Get command line option */
...@@ -4349,7 +4367,6 @@ Disable with --skip-bdb (will save memory).", ...@@ -4349,7 +4367,6 @@ Disable with --skip-bdb (will save memory).",
NO_ARG, 0, 0, 0, 0, 0, 0}, NO_ARG, 0, 0, 0, 0, 0, 0},
{"bdb-no-sync", OPT_BDB_NOSYNC, {"bdb-no-sync", OPT_BDB_NOSYNC,
"This option is deprecated, use --skip-sync-bdb-logs instead", "This option is deprecated, use --skip-sync-bdb-logs instead",
// (gptr*) &opt_sync_bdb_logs, (gptr*) &opt_sync_bdb_logs, 0, GET_BOOL,
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"bdb-shared-data", OPT_BDB_SHARED, {"bdb-shared-data", OPT_BDB_SHARED,
"Start Berkeley DB in multi-process mode.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, "Start Berkeley DB in multi-process mode.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
...@@ -5795,11 +5812,6 @@ static void print_version(void) ...@@ -5795,11 +5812,6 @@ static void print_version(void)
server_version,SYSTEM_TYPE,MACHINE_TYPE, MYSQL_COMPILATION_COMMENT); server_version,SYSTEM_TYPE,MACHINE_TYPE, MYSQL_COMPILATION_COMMENT);
} }
static void use_help(void)
{
print_version();
printf("Use '--help' or '--no-defaults --help' for a list of available options\n");
}
static void usage(void) static void usage(void)
{ {
...@@ -6096,7 +6108,7 @@ static void mysql_init_variables(void) ...@@ -6096,7 +6108,7 @@ static void mysql_init_variables(void)
} }
extern "C" my_bool static my_bool
get_one_option(int optid, const struct my_option *opt __attribute__((unused)), get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
char *argument) char *argument)
{ {
...@@ -6623,7 +6635,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), ...@@ -6623,7 +6635,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
} }
/* Initiates DEBUG - but no debugging here ! */ /* Initiates DEBUG - but no debugging here ! */
extern "C" gptr * static gptr *
mysql_getopt_value(const char *keyname, uint key_length, mysql_getopt_value(const char *keyname, uint key_length,
const struct my_option *option) const struct my_option *option)
{ {
...@@ -6652,7 +6664,7 @@ mysql_getopt_value(const char *keyname, uint key_length, ...@@ -6652,7 +6664,7 @@ mysql_getopt_value(const char *keyname, uint key_length,
} }
void option_error_reporter(enum loglevel level, const char *format, ...) static void option_error_reporter(enum loglevel level, const char *format, ...)
{ {
va_list args; va_list args;
va_start(args, format); va_start(args, format);
......
...@@ -173,6 +173,9 @@ class Geometry ...@@ -173,6 +173,9 @@ class Geometry
static void operator delete(void *ptr, void *buffer) static void operator delete(void *ptr, void *buffer)
{} {}
static void operator delete(void *buffer)
{}
static String bad_geometry_data; static String bad_geometry_data;
enum wkbType enum wkbType
......
...@@ -3115,6 +3115,7 @@ void grant_free(void) ...@@ -3115,6 +3115,7 @@ void grant_free(void)
grant_option = FALSE; grant_option = FALSE;
hash_free(&column_priv_hash); hash_free(&column_priv_hash);
hash_free(&proc_priv_hash); hash_free(&proc_priv_hash);
hash_free(&func_priv_hash);
free_root(&memex,MYF(0)); free_root(&memex,MYF(0));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
...@@ -50,7 +50,8 @@ pthread_key(LEX*,THR_LEX); ...@@ -50,7 +50,8 @@ pthread_key(LEX*,THR_LEX);
used when comparing keywords used when comparing keywords
*/ */
uchar to_upper_lex[] = { static uchar to_upper_lex[]=
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
...@@ -1530,8 +1531,8 @@ void st_select_lex::print_order(String *str, ORDER *order) ...@@ -1530,8 +1531,8 @@ void st_select_lex::print_order(String *str, ORDER *order)
if (order->counter_used) if (order->counter_used)
{ {
char buffer[20]; char buffer[20];
my_snprintf(buffer, 20, "%u", order->counter); uint length= my_snprintf(buffer, 20, "%d", order->counter);
str->append(buffer); str->append(buffer, length);
} }
else else
(*order->item)->print(str); (*order->item)->print(str);
......
...@@ -898,10 +898,11 @@ struct st_lex_local: public st_lex ...@@ -898,10 +898,11 @@ struct st_lex_local: public st_lex
{ /* Never called */ } { /* Never called */ }
}; };
void lex_init(void); extern void lex_init(void);
void lex_free(void); extern void lex_free(void);
void lex_start(THD *thd, uchar *buf,uint length); extern void lex_start(THD *thd, uchar *buf,uint length);
void lex_end(LEX *lex); extern void lex_end(LEX *lex);
extern int yylex(void *arg, void *yythd);
extern pthread_key(LEX*,THR_LEX); extern pthread_key(LEX*,THR_LEX);
......
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