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;
......
This diff is collapsed.
...@@ -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