diff options
author | Bjorn Munch <Bjorn.Munch@sun.com> | 2010-01-04 14:12:30 +0100 |
---|---|---|
committer | Bjorn Munch <Bjorn.Munch@sun.com> | 2010-01-04 14:12:30 +0100 |
commit | a7b2a1ff99017e2bbcbdc2f9c365ac4775db9626 (patch) | |
tree | 97c30ad91231a3a55cd33428ee920bbea5ef32a5 /client | |
parent | f34c7dca0271bced14858c9369cebe2459ff9278 (diff) | |
parent | f37f38006b2d8e73300bf4204b16370892178a46 (diff) | |
download | mariadb-git-a7b2a1ff99017e2bbcbdc2f9c365ac4775db9626.tar.gz |
merge from mysql-next-mr
Diffstat (limited to 'client')
-rw-r--r-- | client/Makefile.am | 2 | ||||
-rw-r--r-- | client/mysql.cc | 4 | ||||
-rw-r--r-- | client/mysqltest.cc | 7 | ||||
-rw-r--r-- | client/sql_string.cc | 80 |
4 files changed, 15 insertions, 78 deletions
diff --git a/client/Makefile.am b/client/Makefile.am index ccd0d8aada0..e94d638a8be 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -108,7 +108,7 @@ sql_src=log_event.h mysql_priv.h rpl_constants.h \ log_event.cc my_decimal.h my_decimal.cc \ log_event_old.h log_event_old.cc \ rpl_record_old.h rpl_record_old.cc -strings_src=decimal.c +strings_src=decimal.c dtoa.c link_sources: for f in $(sql_src) ; do \ diff --git a/client/mysql.cc b/client/mysql.cc index be3c13bf362..726b06b02be 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -100,7 +100,7 @@ extern "C" { #define vidattr(A) {} // Can't get this to work #endif -#ifdef FN_NO_CASE_SENCE +#ifdef FN_NO_CASE_SENSE #define cmp_database(cs,A,B) my_strcasecmp((cs), (A), (B)) #else #define cmp_database(cs,A,B) strcmp((A),(B)) @@ -3652,7 +3652,7 @@ static void print_warnings() mysql_store_result_for_lazy(&result); /* Bail out when no warnings */ - if (!(num_rows= mysql_num_rows(result))) + if (!result || !(num_rows= mysql_num_rows(result))) goto end; cur= mysql_fetch_row(result); diff --git a/client/mysqltest.cc b/client/mysqltest.cc index ccc2a32d8cd..d3181fea522 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -2227,7 +2227,7 @@ do_result_format_version(struct st_command *command) long version; static DYNAMIC_STRING ds_version; const struct command_arg result_format_args[] = { - "version", ARG_STRING, TRUE, &ds_version, "Version to use", + {"version", ARG_STRING, TRUE, &ds_version, "Version to use"} }; DBUG_ENTER("do_result_format_version"); @@ -6163,6 +6163,8 @@ void init_win_path_patterns() "$MYSQL_TMP_DIR", "$MYSQLTEST_VARDIR", "$MASTER_MYSOCK", + "$MYSQL_SHAREDIR", + "$MYSQL_LIBDIR", "./test/" }; int num_paths= sizeof(paths)/sizeof(char*); int i; @@ -7111,7 +7113,7 @@ int util_query(MYSQL* org_mysql, const char* query){ cur_con->util_mysql= mysql; } - return mysql_query(mysql, query); + DBUG_RETURN(mysql_query(mysql, query)); } @@ -7749,6 +7751,7 @@ int main(int argc, char **argv) cur_file->file_name= my_strdup("<stdin>", MYF(MY_WME)); cur_file->lineno= 1; } + var_set_string("MYSQLTEST_FILE", cur_file->file_name); init_re(); ps_protocol_enabled= ps_protocol; sp_protocol_enabled= sp_protocol; diff --git a/client/sql_string.cc b/client/sql_string.cc index 3292bc7e6f2..ccbc8977e7f 100644 --- a/client/sql_string.cc +++ b/client/sql_string.cc @@ -24,10 +24,6 @@ #include <m_string.h> #include <m_ctype.h> #include <mysql_com.h> -#ifdef HAVE_FCONVERT -#include <floatingpoint.h> -#endif - /* The following extern declarations are ok as these are interface functions required by the string function @@ -117,82 +113,19 @@ bool String::set(ulonglong num, CHARSET_INFO *cs) bool String::set(double num,uint decimals, CHARSET_INFO *cs) { - char buff[331]; + char buff[FLOATING_POINT_BUFFER]; uint dummy_errors; + size_t len; str_charset=cs; if (decimals >= NOT_FIXED_DEC) { - uint32 len= my_sprintf(buff,(buff, "%.15g",num));// Enough for a DATETIME + len= my_gcvt(num, MY_GCVT_ARG_DOUBLE, sizeof(buff) - 1, buff, NULL); return copy(buff, len, &my_charset_latin1, cs, &dummy_errors); } -#ifdef HAVE_FCONVERT - int decpt,sign; - char *pos,*to; - - (void) fconvert(num,(int) decimals,&decpt,&sign,buff+1); - if (!my_isdigit(&my_charset_latin1, buff[1])) - { // Nan or Inf - pos=buff+1; - if (sign) - { - buff[0]='-'; - pos=buff; - } - uint dummy_errors; - return copy(pos,(uint32) strlen(pos), &my_charset_latin1, cs, &dummy_errors); - } - if (alloc((uint32) ((uint32) decpt+3+decimals))) - return TRUE; - to=Ptr; - if (sign) - *to++='-'; - - pos=buff+1; - if (decpt < 0) - { /* value is < 0 */ - *to++='0'; - if (!decimals) - goto end; - *to++='.'; - if ((uint32) -decpt > decimals) - decpt= - (int) decimals; - decimals=(uint32) ((int) decimals+decpt); - while (decpt++ < 0) - *to++='0'; - } - else if (decpt == 0) - { - *to++= '0'; - if (!decimals) - goto end; - *to++='.'; - } - else - { - while (decpt-- > 0) - *to++= *pos++; - if (!decimals) - goto end; - *to++='.'; - } - while (decimals--) - *to++= *pos++; - -end: - *to=0; - str_length=(uint32) (to-Ptr); - return FALSE; -#else -#ifdef HAVE_SNPRINTF - buff[sizeof(buff)-1]=0; // Safety - snprintf(buff,sizeof(buff)-1, "%.*f",(int) decimals,num); -#else - sprintf(buff,"%.*f",(int) decimals,num); -#endif - return copy(buff,(uint32) strlen(buff), &my_charset_latin1, cs, + len= my_fcvt(num, decimals, buff, NULL); + return copy(buff, (uint32) len, &my_charset_latin1, cs, &dummy_errors); -#endif } @@ -675,7 +608,8 @@ void String::qs_append(const char *str, uint32 len) void String::qs_append(double d) { char *buff = Ptr + str_length; - str_length+= my_sprintf(buff, (buff, "%.15g", d)); + str_length+= my_gcvt(d, MY_GCVT_ARG_DOUBLE, FLOATING_POINT_BUFFER - 1, buff, + NULL); } void String::qs_append(double *d) |