diff options
author | Alexander Barkov <bar@mariadb.org> | 2015-12-29 19:37:11 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2015-12-29 19:37:11 +0400 |
commit | 2ba7ed77aab05004f0c853a77850e325b78a1892 (patch) | |
tree | 943659d76215e16d0d1946c28683c562debeff34 /mysys | |
parent | 63f0669fd6dc430b60ffd5de0bff9854622a1c1a (diff) | |
parent | 1bb66ea88c4679d6bd3ad1472d75983e66f679ae (diff) | |
download | mariadb-git-2ba7ed77aab05004f0c853a77850e325b78a1892.tar.gz |
Merge remote-tracking branch 'origin/10.1' into 10.2
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/ma_dyncol.c | 11 | ||||
-rw-r--r-- | mysys/mf_iocache.c | 6 | ||||
-rw-r--r-- | mysys/my_getopt.c | 2 | ||||
-rw-r--r-- | mysys/my_rdtsc.c | 9 | ||||
-rw-r--r-- | mysys/my_static.c | 1 | ||||
-rw-r--r-- | mysys/string.c | 3 |
6 files changed, 22 insertions, 10 deletions
diff --git a/mysys/ma_dyncol.c b/mysys/ma_dyncol.c index e6e04efe121..ffe818e12b9 100644 --- a/mysys/ma_dyncol.c +++ b/mysys/ma_dyncol.c @@ -3724,7 +3724,8 @@ mariadb_dyncol_check(DYNAMIC_COLUMN *str) /* It is not first entry */ if (prev_data_offset > data_offset || ((prev_type != DYN_COL_INT && - prev_type != DYN_COL_UINT) && prev_data_offset == data_offset)) + prev_type != DYN_COL_UINT && + prev_type != DYN_COL_DECIMAL) && prev_data_offset == data_offset)) { DBUG_PRINT("info", ("Field order: %u Previous data offset: %u" " >(=) Current data offset: %u", @@ -3836,14 +3837,12 @@ mariadb_dyncol_val_str(DYNAMIC_STRING *str, DYNAMIC_COLUMN_VALUE *val, return ER_DYNCOL_RESOURCE; break; case DYN_COL_DOUBLE: - len= my_snprintf(buff, sizeof(buff), "%g", val->x.double_value); + + len= my_gcvt(val->x.double_value, MY_GCVT_ARG_DOUBLE, + sizeof(buff) - 1, buff, NULL); if (dynstr_realloc(str, len + (quote ? 2 : 0))) return ER_DYNCOL_RESOURCE; - if (quote) - str->str[str->length++]= quote; dynstr_append_mem(str, buff, len); - if (quote) - str->str[str->length++]= quote; break; case DYN_COL_DYNCOL: case DYN_COL_STRING: diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index 28e5e72130d..db8d0b51ada 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -663,7 +663,11 @@ int _my_b_cache_read(IO_CACHE *info, uchar *Buffer, size_t Count) info->error= (int) left_length; DBUG_RETURN(1); } - length=0; /* Didn't read any chars */ + else + { + info->error= 0; + DBUG_RETURN(0); /* EOF */ + } } else if ((length= mysql_file_read(info->file,info->buffer, max_length, info->myflags)) < Count || diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index 02a8b20a72f..3f75f6553a2 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -1,6 +1,6 @@ /* Copyright (c) 2002, 2013, Oracle and/or its affiliates - Copyright (c) 2009, 2013, Monty Program Ab + Copyright (c) 2009, 2015, MariaDB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/mysys/my_rdtsc.c b/mysys/my_rdtsc.c index 82e560944f9..4228973caa8 100644 --- a/mysys/my_rdtsc.c +++ b/mysys/my_rdtsc.c @@ -249,6 +249,13 @@ ulonglong my_timer_cycles(void) clock_gettime(CLOCK_SGI_CYCLE, &tp); return (ulonglong) tp.tv_sec * 1000000000 + (ulonglong) tp.tv_nsec; } +#elif defined(__GNUC__) && defined(__s390__) + /* covers both s390 and s390x */ + { + ulonglong result; + __asm__ __volatile__ ("stck %0" : "=Q" (result) : : "cc"); + return result; + } #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) /* gethrtime may appear as either cycle or nanosecond counter */ return (ulonglong) gethrtime(); @@ -558,6 +565,8 @@ void my_timer_init(MY_TIMER_INFO *mti) mti->cycles.routine= MY_TIMER_ROUTINE_ASM_GCC_SPARC32; #elif defined(__sgi) && defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_SGI_CYCLE) mti->cycles.routine= MY_TIMER_ROUTINE_SGI_CYCLE; +#elif defined(__GNUC__) && defined(__s390__) + mti->cycles.routine= MY_TIMER_ROUTINE_ASM_S390; #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) mti->cycles.routine= MY_TIMER_ROUTINE_GETHRTIME; #else diff --git a/mysys/my_static.c b/mysys/my_static.c index 84d2dc64fc6..4aca78e30a9 100644 --- a/mysys/my_static.c +++ b/mysys/my_static.c @@ -72,7 +72,6 @@ ulong my_time_to_wait_for_lock=2; /* In seconds */ #ifdef SHARED_LIBRARY const char *globerrs[GLOBERRS]; /* my_error_messages is here */ #endif -void (*my_abort_hook)(int) = (void(*)(int)) exit; void (*error_handler_hook)(uint error, const char *str, myf MyFlags)= my_message_stderr; void (*fatal_error_handler_hook)(uint error, const char *str, myf MyFlags)= diff --git a/mysys/string.c b/mysys/string.c index 42fe83ed4e1..cc73d18c601 100644 --- a/mysys/string.c +++ b/mysys/string.c @@ -208,7 +208,8 @@ my_bool dynstr_append_quoted(DYNAMIC_STRING *str, void dynstr_free(DYNAMIC_STRING *str) { - my_free(str->str); + if (str->str) /* Safety to allow double free */ + my_free(str->str); str->str= NULL; } |