summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorBjorn Munch <Bjorn.Munch@sun.com>2010-01-04 14:12:30 +0100
committerBjorn Munch <Bjorn.Munch@sun.com>2010-01-04 14:12:30 +0100
commita7b2a1ff99017e2bbcbdc2f9c365ac4775db9626 (patch)
tree97c30ad91231a3a55cd33428ee920bbea5ef32a5 /client
parentf34c7dca0271bced14858c9369cebe2459ff9278 (diff)
parentf37f38006b2d8e73300bf4204b16370892178a46 (diff)
downloadmariadb-git-a7b2a1ff99017e2bbcbdc2f9c365ac4775db9626.tar.gz
merge from mysql-next-mr
Diffstat (limited to 'client')
-rw-r--r--client/Makefile.am2
-rw-r--r--client/mysql.cc4
-rw-r--r--client/mysqltest.cc7
-rw-r--r--client/sql_string.cc80
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)