mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Merge from mysql-5.5-bugteam to mysql-5.5-runtime
No conflicts
This commit is contained in:
commit
b23c19e82f
16 changed files with 63 additions and 33 deletions
|
@ -855,7 +855,7 @@ _rl_read_init_file (filename, include_level)
|
|||
{
|
||||
register int i;
|
||||
char *buffer, *openname, *line, *end;
|
||||
size_t file_size;
|
||||
size_t file_size = 0;
|
||||
|
||||
current_readline_init_file = filename;
|
||||
current_readline_init_include_level = include_level;
|
||||
|
|
|
@ -76,7 +76,9 @@ extern "C" {
|
|||
extern void *(*my_str_malloc)(size_t);
|
||||
extern void (*my_str_free)(void *);
|
||||
|
||||
#if defined(HAVE_STPCPY)
|
||||
#if defined(HAVE_STPCPY) && MY_GNUC_PREREQ(3, 4)
|
||||
#define strmov(A,B) __builtin_stpcpy((A),(B))
|
||||
#elif defined(HAVE_STPCPY)
|
||||
#define strmov(A,B) stpcpy((A),(B))
|
||||
#ifndef stpcpy
|
||||
extern char *stpcpy(char *, const char *); /* For AIX with gcc 2.95.3 */
|
||||
|
|
|
@ -76,6 +76,11 @@
|
|||
/**
|
||||
Generic (compiler-independent) features.
|
||||
*/
|
||||
|
||||
#ifndef MY_GNUC_PREREQ
|
||||
# define MY_GNUC_PREREQ(maj, min) (0)
|
||||
#endif
|
||||
|
||||
#ifndef MY_ALIGNOF
|
||||
# ifdef __cplusplus
|
||||
template<typename type> struct my_alignof_helper { char m1; type m2; };
|
||||
|
|
|
@ -607,3 +607,12 @@ SELECT floor(log10(format(concat_ws(5445796E25, 5306463, 30837), -358821)))
|
|||
as foo;
|
||||
foo
|
||||
2
|
||||
#
|
||||
# Bug #58137 char(0) column cause:
|
||||
# my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed
|
||||
#
|
||||
CREATE TABLE t1(a char(0));
|
||||
INSERT INTO t1 (SELECT -pi());
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'a' at row 1
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -464,3 +464,11 @@ SELECT -9223372036854775808 MOD -1;
|
|||
--echo #
|
||||
SELECT floor(log10(format(concat_ws(5445796E25, 5306463, 30837), -358821)))
|
||||
as foo;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #58137 char(0) column cause:
|
||||
--echo # my_gcvt: Assertion `width > 0 && to != ((void *)0)' failed
|
||||
--echo #
|
||||
CREATE TABLE t1(a char(0));
|
||||
INSERT INTO t1 (SELECT -pi());
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -68,6 +68,9 @@ const char *my_defaults_file=0;
|
|||
const char *my_defaults_group_suffix=0;
|
||||
const char *my_defaults_extra_file=0;
|
||||
|
||||
static char my_defaults_file_buffer[FN_REFLEN];
|
||||
static char my_defaults_extra_file_buffer[FN_REFLEN];
|
||||
|
||||
static my_bool defaults_already_read= FALSE;
|
||||
|
||||
/* Which directories are searched for options (and in which order) */
|
||||
|
@ -152,22 +155,19 @@ static char *remove_end_comment(char *ptr);
|
|||
*/
|
||||
|
||||
static int
|
||||
fn_expand(const char *filename, const char **filename_var)
|
||||
fn_expand(const char *filename, char *result_buf)
|
||||
{
|
||||
char dir[FN_REFLEN], buf[FN_REFLEN];
|
||||
char dir[FN_REFLEN];
|
||||
const int flags= MY_UNPACK_FILENAME | MY_SAFE_PATH | MY_RELATIVE_PATH;
|
||||
const char *result_path= NULL;
|
||||
DBUG_ENTER("fn_expand");
|
||||
DBUG_PRINT("enter", ("filename: %s, buf: 0x%lx", filename, (unsigned long) buf));
|
||||
DBUG_PRINT("enter", ("filename: %s, result_buf: 0x%lx",
|
||||
filename, (unsigned long) result_buf));
|
||||
if (my_getwd(dir, sizeof(dir), MYF(0)))
|
||||
DBUG_RETURN(3);
|
||||
DBUG_PRINT("debug", ("dir: %s", dir));
|
||||
if (fn_format(buf, filename, dir, NULL, flags) == NULL ||
|
||||
(result_path= my_strdup(buf, MYF(0))) == NULL)
|
||||
if (fn_format(result_buf, filename, dir, NULL, flags) == NULL)
|
||||
DBUG_RETURN(2);
|
||||
DBUG_PRINT("return", ("result: %s", result_path));
|
||||
DBUG_ASSERT(result_path != NULL);
|
||||
*filename_var= result_path;
|
||||
DBUG_PRINT("return", ("result: %s", result_buf));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
@ -224,16 +224,18 @@ int my_search_option_files(const char *conf_file, int *argc, char ***argv,
|
|||
|
||||
if (forced_extra_defaults && !defaults_already_read)
|
||||
{
|
||||
int error= fn_expand(forced_extra_defaults, &my_defaults_extra_file);
|
||||
int error= fn_expand(forced_extra_defaults, my_defaults_extra_file_buffer);
|
||||
if (error)
|
||||
DBUG_RETURN(error);
|
||||
my_defaults_extra_file= my_defaults_extra_file_buffer;
|
||||
}
|
||||
|
||||
if (forced_default_file && !defaults_already_read)
|
||||
{
|
||||
int error= fn_expand(forced_default_file, &my_defaults_file);
|
||||
int error= fn_expand(forced_default_file, my_defaults_file_buffer);
|
||||
if (error)
|
||||
DBUG_RETURN(error);
|
||||
my_defaults_file= my_defaults_file_buffer;
|
||||
}
|
||||
|
||||
defaults_already_read= TRUE;
|
||||
|
|
|
@ -3963,11 +3963,11 @@ restart:
|
|||
if (!(block->status & (BLOCK_IN_EVICTION | BLOCK_IN_SWITCH |
|
||||
BLOCK_REASSIGNED)))
|
||||
{
|
||||
struct st_hash_link *next_hash_link;
|
||||
my_off_t next_diskpos;
|
||||
File next_file;
|
||||
uint next_status;
|
||||
uint hash_requests;
|
||||
struct st_hash_link *UNINIT_VAR(next_hash_link);
|
||||
my_off_t UNINIT_VAR(next_diskpos);
|
||||
File UNINIT_VAR(next_file);
|
||||
uint UNINIT_VAR(next_status);
|
||||
uint UNINIT_VAR(hash_requests);
|
||||
|
||||
total_found++;
|
||||
found++;
|
||||
|
|
|
@ -117,6 +117,7 @@ size_t nmatch;
|
|||
my_regmatch_t pmatch[];
|
||||
int eflags;
|
||||
{
|
||||
char *pstr = (char *) str;
|
||||
register struct re_guts *g = preg->re_g;
|
||||
#ifdef REDEBUG
|
||||
# define GOODFLAGS(f) (f)
|
||||
|
@ -133,7 +134,7 @@ int eflags;
|
|||
|
||||
if ((size_t) g->nstates <= CHAR_BIT*sizeof(states1) &&
|
||||
!(eflags®_LARGE))
|
||||
return(smatcher(preg->charset, g, (char *)str, nmatch, pmatch, eflags));
|
||||
return(smatcher(preg->charset, g, pstr, nmatch, pmatch, eflags));
|
||||
else
|
||||
return(lmatcher(preg->charset, g, (char *)str, nmatch, pmatch, eflags));
|
||||
return(lmatcher(preg->charset, g, pstr, nmatch, pmatch, eflags));
|
||||
}
|
||||
|
|
|
@ -1691,7 +1691,7 @@ static void debug_sync_execute(THD *thd, st_debug_sync_action *action)
|
|||
|
||||
if (action->execute)
|
||||
{
|
||||
const char *old_proc_info;
|
||||
const char *UNINIT_VAR(old_proc_info);
|
||||
|
||||
action->execute--;
|
||||
|
||||
|
|
|
@ -6327,10 +6327,13 @@ int Field_str::store(double nr)
|
|||
ASSERT_COLUMN_MARKED_FOR_WRITE;
|
||||
char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE];
|
||||
uint local_char_length= field_length / charset()->mbmaxlen;
|
||||
size_t length;
|
||||
my_bool error;
|
||||
size_t length= 0;
|
||||
my_bool error= (local_char_length == 0);
|
||||
|
||||
// my_gcvt() requires width > 0, and we may have a CHAR(0) column.
|
||||
if (!error)
|
||||
length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
|
||||
|
||||
length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
|
||||
if (error)
|
||||
{
|
||||
if (table->in_use->abort_on_warning)
|
||||
|
|
|
@ -4184,7 +4184,7 @@ int handler::read_multi_range_first(KEY_MULTI_RANGE **found_range_p,
|
|||
*/
|
||||
int handler::read_multi_range_next(KEY_MULTI_RANGE **found_range_p)
|
||||
{
|
||||
int result;
|
||||
int UNINIT_VAR(result);
|
||||
DBUG_ENTER("handler::read_multi_range_next");
|
||||
|
||||
/* We should not be called after the last call returned EOF. */
|
||||
|
|
|
@ -2521,7 +2521,7 @@ static int exec_relay_log_event(THD* thd, Relay_log_info* rli)
|
|||
|
||||
if (slave_trans_retries)
|
||||
{
|
||||
int temp_err;
|
||||
int UNINIT_VAR(temp_err);
|
||||
if (exec_res && (temp_err= has_temporary_error(thd)))
|
||||
{
|
||||
const char *errmsg;
|
||||
|
|
|
@ -7484,8 +7484,8 @@ int get_part_iter_for_interval_via_mapping(partition_info *part_info,
|
|||
PARTITION_ITERATOR *part_iter)
|
||||
{
|
||||
Field *field= part_info->part_field_array[0];
|
||||
uint32 max_endpoint_val;
|
||||
get_endpoint_func get_endpoint;
|
||||
uint32 UNINIT_VAR(max_endpoint_val);
|
||||
get_endpoint_func UNINIT_VAR(get_endpoint);
|
||||
bool can_match_multiple_values; /* is not '=' */
|
||||
uint field_len= field->pack_length_in_rec();
|
||||
DBUG_ENTER("get_part_iter_for_interval_via_mapping");
|
||||
|
|
|
@ -63,7 +63,7 @@ static int FT_SUPERDOC_cmp(void* cmp_arg __attribute__((unused)),
|
|||
|
||||
static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
|
||||
{
|
||||
int subkeys, r;
|
||||
int UNINIT_VAR(subkeys), r;
|
||||
uint keylen, doc_cnt;
|
||||
FT_SUPERDOC sdoc, *sptr;
|
||||
TREE_ELEMENT *selem;
|
||||
|
|
|
@ -220,7 +220,7 @@ MYRG_INFO *myrg_parent_open(const char *parent_name,
|
|||
int (*callback)(void*, const char*),
|
||||
void *callback_param)
|
||||
{
|
||||
MYRG_INFO *m_info;
|
||||
MYRG_INFO *UNINIT_VAR(m_info);
|
||||
int rc;
|
||||
int errpos;
|
||||
int save_errno;
|
||||
|
|
|
@ -1199,7 +1199,7 @@ my_bool fetch_n(const char **query_list, unsigned query_count,
|
|||
|
||||
/* Separate thread query to test some cases */
|
||||
|
||||
static my_bool thread_query(char *query)
|
||||
static my_bool thread_query(const char *query)
|
||||
{
|
||||
MYSQL *l_mysql;
|
||||
my_bool error;
|
||||
|
@ -1221,7 +1221,7 @@ static my_bool thread_query(char *query)
|
|||
goto end;
|
||||
}
|
||||
l_mysql->reconnect= 1;
|
||||
if (mysql_query(l_mysql, (char *)query))
|
||||
if (mysql_query(l_mysql, query))
|
||||
{
|
||||
fprintf(stderr, "Query failed (%s)\n", mysql_error(l_mysql));
|
||||
error= 1;
|
||||
|
@ -6447,7 +6447,7 @@ static void test_prepare_alter()
|
|||
rc= mysql_stmt_execute(stmt);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
if (thread_query((char *)"ALTER TABLE test_prep_alter change id id_new varchar(20)"))
|
||||
if (thread_query("ALTER TABLE test_prep_alter change id id_new varchar(20)"))
|
||||
exit(1);
|
||||
|
||||
is_null= 1;
|
||||
|
|
Loading…
Reference in a new issue