automerge

This commit is contained in:
Georgi Kodinov 2009-07-14 11:47:22 +03:00
commit 7cf4e36f2d
81 changed files with 800 additions and 1448 deletions

View File

@ -44,8 +44,13 @@ check_cpu () {
model_name=`sysctl -n hw.model`
;;
Darwin)
cpu_family=`uname -p`
model_name=`machine`
cpu_family=`sysctl -n machdep.cpu.vendor`
model_name=`sysctl -n machdep.cpu.brand_string`
if [ -z "$cpu_family" -o -z "$model_name" ]
then
cpu_family=`uname -p`
model_name=`machine`
fi
;;
*)
cpu_family=`uname -m`;

View File

@ -1974,7 +1974,7 @@ static COMMANDS *find_command(char *name,char cmd_char)
(uchar*)commands[i].name,len) &&
!commands[i].name[len] &&
(!end || (end && commands[i].takes_params))) ||
!name && commands[i].cmd_char == cmd_char))
(!name && commands[i].cmd_char == cmd_char)))
{
DBUG_PRINT("exit",("found command: %s", commands[i].name));
DBUG_RETURN(&commands[i]);
@ -2132,7 +2132,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
buffer.length(0);
}
else if (!*ml_comment && (!*in_string && (inchar == '#' ||
inchar == '-' && pos[1] == '-' &&
(inchar == '-' && pos[1] == '-' &&
/*
The third byte is either whitespace or is the
end of the line -- which would occur only
@ -2140,7 +2140,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
itself whitespace and should also match.
*/
(my_isspace(charset_info,pos[2]) ||
!pos[2]))))
!pos[2])))))
{
// Flush previously accepted characters
if (out != line)

View File

@ -527,8 +527,8 @@ int process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
Format events are not concerned by --offset and such, we always need to
read them to be able to process the wanted events.
*/
if ((rec_count >= offset) &&
((my_time_t)(ev->when) >= start_datetime) ||
if (((rec_count >= offset) &&
((my_time_t)(ev->when) >= start_datetime)) ||
(ev_type == FORMAT_DESCRIPTION_EVENT))
{
if (ev_type != FORMAT_DESCRIPTION_EVENT)

View File

@ -1682,7 +1682,7 @@ void check_result(DYNAMIC_STRING* ds)
dynstr_set(ds, NULL); /* Don't create a .log file */
show_diff(NULL, result_file_name, reject_file);
die(mess);
die("%s", mess);
break;
}
default: /* impossible */

View File

@ -79,7 +79,7 @@ static int _rl_read_init_file PARAMS((const char *, int));
static int glean_key_from_name PARAMS((char *));
static int find_boolean_var PARAMS((const char *));
static char *_rl_get_string_variable_value PARAMS((const char *));
static const char *_rl_get_string_variable_value PARAMS((const char *));
static int substring_member_of_array PARAMS((char *, const char **));
static int currently_reading_init_file;
@ -442,7 +442,7 @@ rl_translate_keyseq (seq, array, len)
{
register int i, c, l, temp;
for (i = l = 0; c = seq[i]; i++)
for (i = l = 0; (c = seq[i]); i++)
{
if (c == '\\')
{
@ -776,7 +776,8 @@ _rl_read_file (filename, sizep)
file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */
if (file_size != finfo.st_size || file_size + 1 < file_size)
if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
file_size + 1 < file_size)
{
if (file >= 0)
close (file);
@ -807,7 +808,7 @@ _rl_read_file (filename, sizep)
/* Re-read the current keybindings file. */
int
rl_re_read_init_file (count, ignore)
int count, ignore;
int count __attribute__((unused)), ignore __attribute__((unused));
{
int r;
r = rl_read_init_file ((const char *)NULL);
@ -1031,7 +1032,7 @@ parser_if (args)
/* Invert the current parser state if there is anything on the stack. */
static int
parser_else (args)
char *args;
char *args __attribute__((unused));
{
register int i;
@ -1062,7 +1063,7 @@ parser_else (args)
_rl_parsing_conditionalized_out from the stack. */
static int
parser_endif (args)
char *args;
char *args __attribute__((unused));
{
if (if_stack_depth)
_rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
@ -1185,7 +1186,7 @@ rl_parse_and_bind (string)
{
int passc = 0;
for (i = 1; c = string[i]; i++)
for (i = 1; (c = string[i]); i++)
{
if (passc)
{
@ -1276,7 +1277,7 @@ rl_parse_and_bind (string)
int delimiter, passc;
delimiter = string[i++];
for (passc = 0; c = string[i]; i++)
for (passc = 0; (c = string[i]); i++)
{
if (passc)
{
@ -1436,7 +1437,7 @@ static struct {
#if defined (VISIBLE_STATS)
{ "visible-stats", &rl_visible_stats, 0 },
#endif /* VISIBLE_STATS */
{ (char *)NULL, (int *)NULL }
{ (char *)NULL, (int *)NULL, 0 }
};
static int
@ -1505,7 +1506,7 @@ static struct {
{ "editing-mode", V_STRING, sv_editmode },
{ "isearch-terminators", V_STRING, sv_isrchterm },
{ "keymap", V_STRING, sv_keymap },
{ (char *)NULL, 0 }
{ (char *)NULL, 0, (_rl_sv_func_t*)NULL }
};
static int
@ -1532,7 +1533,7 @@ bool_to_int (value)
(value[0] == '1' && value[1] == '\0'));
}
char *
const char *
rl_variable_value (name)
const char *name;
{
@ -1799,7 +1800,7 @@ rl_set_keymap_from_edit_mode ()
#endif /* VI_MODE */
}
char *
const char *
rl_get_keymap_name_from_edit_mode ()
{
if (rl_editing_mode == emacs_mode)
@ -2048,7 +2049,7 @@ rl_function_dumper (print_readably)
fprintf (rl_outstream, "\n");
for (i = 0; name = names[i]; i++)
for (i = 0; (name = names[i]); i++)
{
rl_command_func_t *function;
char **invokers;
@ -2108,7 +2109,7 @@ rl_function_dumper (print_readably)
the output in such a way that it can be read back in. */
int
rl_dump_functions (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
if (rl_dispatching)
fprintf (rl_outstream, "\r\n");
@ -2188,7 +2189,7 @@ rl_macro_dumper (print_readably)
int
rl_dump_macros (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
if (rl_dispatching)
fprintf (rl_outstream, "\r\n");
@ -2197,12 +2198,13 @@ rl_dump_macros (count, key)
return (0);
}
static char *
static const char *
_rl_get_string_variable_value (name)
const char *name;
{
static char numbuf[32];
char *ret;
const char *ret;
char *tmp;
if (_rl_stricmp (name, "bell-style") == 0)
{
@ -2230,11 +2232,11 @@ _rl_get_string_variable_value (name)
{
if (_rl_isearch_terminators == 0)
return 0;
ret = _rl_untranslate_macro_value (_rl_isearch_terminators);
if (ret)
tmp = _rl_untranslate_macro_value (_rl_isearch_terminators);
if (tmp)
{
strncpy (numbuf, ret, sizeof (numbuf) - 1);
free (ret);
strncpy (numbuf, tmp, sizeof (numbuf) - 1);
free (tmp);
numbuf[sizeof(numbuf) - 1] = '\0';
}
else
@ -2257,7 +2259,7 @@ rl_variable_dumper (print_readably)
int print_readably;
{
int i;
char *v;
const char *v;
for (i = 0; boolean_varlist[i].name; i++)
{
@ -2286,7 +2288,7 @@ rl_variable_dumper (print_readably)
the output in such a way that it can be read back in. */
int
rl_dump_variables (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
if (rl_dispatching)
fprintf (rl_outstream, "\r\n");

View File

@ -358,14 +358,14 @@ rl_complete (ignore, invoking_key)
/* List the possible completions. See description of rl_complete (). */
int
rl_possible_completions (ignore, invoking_key)
int ignore, invoking_key;
int ignore __attribute__((unused)), invoking_key __attribute__((unused));
{
return (rl_complete_internal ('?'));
}
int
rl_insert_completions (ignore, invoking_key)
int ignore, invoking_key;
int ignore __attribute__((unused)), invoking_key __attribute__((unused));
{
return (rl_complete_internal ('*'));
}
@ -695,7 +695,8 @@ print_filename (to_print, full_pathname)
char *to_print, *full_pathname;
{
int printed_len, extension_char, slen, tlen;
char *s, c, *new_full_pathname, *dn;
char *s, c, *new_full_pathname;
const char *dn;
extension_char = 0;
printed_len = fnprint (to_print);
@ -782,7 +783,7 @@ print_filename (to_print, full_pathname)
static char *
rl_quote_filename (s, rtype, qcp)
char *s;
int rtype;
int rtype __attribute__((unused));
char *qcp;
{
char *r;
@ -883,7 +884,7 @@ _rl_find_completion_word (fp, dp)
/* We didn't find an unclosed quoted substring upon which to do
completion, so use the word break characters to find the
substring on which to complete. */
while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY))
while ((rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)))
{
scan = rl_line_buffer[rl_point];
@ -1802,7 +1803,7 @@ rl_completion_matches (text, entry_function)
match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));
match_list[1] = (char *)NULL;
while (string = (*entry_function) (text, matches))
while ((string = (*entry_function) (text, matches)))
{
if (matches + 1 == match_list_size)
match_list = (char **)xrealloc
@ -2110,7 +2111,7 @@ rl_filename_completion_function (text, state)
ring the bell, and reset the counter to zero. */
int
rl_menu_complete (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
rl_compentry_func_t *our_func;
int matching_filenames, found_quote;

View File

@ -127,7 +127,7 @@ int _rl_want_redisplay = 0;
/* The stuff that gets printed out before the actual text of the line.
This is usually pointing to rl_prompt. */
char *rl_display_prompt = (char *)NULL;
const char *rl_display_prompt = (const char *)NULL;
/* Pseudo-global variables declared here. */
@ -229,7 +229,10 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
int *lp, *lip, *niflp, *vlp;
{
char *r, *ret, *p, *igstart;
int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
int l, rl, last, ignoring, ninvis, invfl, invflset, physchars;
#if defined (HANDLE_MULTIBYTE)
int ind, pind;
#endif
/* Short-circuit if we can. */
if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0)
@ -242,7 +245,7 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
if (niflp)
*niflp = 0;
if (vlp)
*vlp = lp ? *lp : strlen (r);
*vlp = lp ? *lp : (int)strlen (r);
return r;
}
@ -459,9 +462,10 @@ rl_redisplay ()
register int in, out, c, linenum, cursor_linenum;
register char *line;
int inv_botlin, lb_botlin, lb_linenum, o_cpos;
int newlines, lpos, temp, modmark, n0, num;
char *prompt_this_line;
int newlines, lpos, temp, modmark;
const char *prompt_this_line;
#if defined (HANDLE_MULTIBYTE)
int num, n0;
wchar_t wc;
size_t wc_bytes;
int wc_width;
@ -626,7 +630,6 @@ rl_redisplay ()
contents of the command line? */
while (lpos >= _rl_screenwidth)
{
int z;
/* fix from Darin Johnson <darin@acuson.com> for prompt string with
invisible characters that is longer than the screen width. The
prompt_invis_chars_first_line variable could be made into an array
@ -635,6 +638,7 @@ rl_redisplay ()
prompts that exceed two physical lines?
Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
#if defined (HANDLE_MULTIBYTE)
int z;
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
n0 = num;
@ -878,6 +882,7 @@ rl_redisplay ()
if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
{
int nleft, pos, changed_screen_line, tx;
char empty_str[1] = { 0 };
if (!rl_display_fixed || forced_display)
{
@ -902,7 +907,7 @@ rl_redisplay ()
#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l])
#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? empty_str : VIS_CHARS(line)
#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
/* For each line in the buffer, do the updating display. */
@ -969,7 +974,7 @@ rl_redisplay ()
_rl_move_vert (linenum);
_rl_move_cursor_relative (0, tt);
_rl_clear_to_eol
((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
((linenum == _rl_vis_botlin) ? (int)strlen (tt) : _rl_screenwidth);
}
}
_rl_vis_botlin = inv_botlin;
@ -2261,7 +2266,7 @@ static void
redraw_prompt (t)
char *t;
{
char *oldp;
const char *oldp;
oldp = rl_display_prompt;
rl_save_prompt ();

View File

@ -87,14 +87,14 @@ char history_comment_char = '\0';
/* The list of characters which inhibit the expansion of text if found
immediately following history_expansion_char. */
char *history_no_expand_chars = " \t\n\r=";
const char *history_no_expand_chars = " \t\n\r=";
/* If set to a non-zero value, single quotes inhibit history expansion.
The default is 0. */
int history_quotes_inhibit_expansion = 0;
/* Used to split words by history_tokenize_internal. */
char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
const char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
/* If set, this points to a function that is called to verify that a
particular history expansion should be performed. */
@ -203,7 +203,7 @@ get_history_event (string, caller_index, delimiting_quote)
}
/* Only a closing `?' or a newline delimit a substring search string. */
for (local_index = i; c = string[i]; i++)
for (local_index = i; (c = string[i]); i++)
{
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)

View File

@ -186,7 +186,8 @@ read_history_range (filename, from, to)
file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */
if (file_size != finfo.st_size || file_size + 1 < file_size)
if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
file_size + 1 < file_size)
{
errno = overflow_errno;
goto error_and_exit;
@ -339,7 +340,8 @@ history_truncate_file (fname, lines)
file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */
if (file_size != finfo.st_size || file_size + 1 < file_size)
if ((sizeof(off_t) > sizeof(size_t) && finfo.st_size > (off_t)(size_t)~0) ||
file_size + 1 < file_size)
{
close (file);
#if defined (EFBIG)

View File

@ -243,9 +243,9 @@ extern int history_length;
extern int history_max_entries;
extern char history_expansion_char;
extern char history_subst_char;
extern char *history_word_delimiters;
extern const char *history_word_delimiters;
extern char history_comment_char;
extern char *history_no_expand_chars;
extern const char *history_no_expand_chars;
extern char *history_search_delimiter_chars;
extern int history_quotes_inhibit_expansion;

View File

@ -420,7 +420,7 @@ rl_read_key ()
else
{
/* If input is coming from a macro, then use that. */
if (c = _rl_next_macro_key ())
if ((c = _rl_next_macro_key ()))
return (c);
/* If the user has an event function, then call it periodically. */

View File

@ -75,7 +75,7 @@ static int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int));
static char *last_isearch_string;
static int last_isearch_string_len;
static char *default_isearch_terminators = "\033\012";
static const char *default_isearch_terminators = "\033\012";
_rl_search_cxt *
_rl_scxt_alloc (type, flags)
@ -119,7 +119,7 @@ _rl_scxt_alloc (type, flags)
void
_rl_scxt_dispose (cxt, flags)
_rl_search_cxt *cxt;
int flags;
int flags __attribute__((unused));
{
FREE (cxt->search_string);
FREE (cxt->allocated_line);
@ -154,7 +154,7 @@ rl_forward_search_history (sign, key)
static void
rl_display_search (search_string, reverse_p, where)
char *search_string;
int reverse_p, where;
int reverse_p, where __attribute__((unused));
{
char *message;
int msglen, searchlen;
@ -614,7 +614,7 @@ _rl_isearch_cleanup (cxt, r)
backwards. */
static int
rl_search_history (direction, invoking_key)
int direction, invoking_key;
int direction, invoking_key __attribute__((unused));
{
_rl_search_cxt *cxt; /* local for now, but saved globally */
int c, r;

View File

@ -79,7 +79,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int));
of kill material. */
int
rl_set_retained_kills (num)
int num;
int num __attribute__((unused));
{
return 0;
}
@ -296,7 +296,7 @@ rl_backward_kill_line (direction, ignore)
/* Kill the whole line, no matter where point is. */
int
rl_kill_full_line (count, ignore)
int count, ignore;
int count __attribute__((unused)), ignore __attribute__((unused));
{
rl_begin_undo_group ();
rl_point = 0;
@ -314,7 +314,7 @@ rl_kill_full_line (count, ignore)
using behaviour that they expect. */
int
rl_unix_word_rubout (count, key)
int count, key;
int count, key __attribute__((unused));
{
int orig_point;
@ -347,7 +347,7 @@ rl_unix_word_rubout (count, key)
deletes backward to directory separator (`/') or whitespace. */
int
rl_unix_filename_rubout (count, key)
int count, key;
int count, key __attribute__((unused));
{
int orig_point, c;
@ -391,7 +391,7 @@ rl_unix_filename_rubout (count, key)
doing. */
int
rl_unix_line_discard (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
if (rl_point == 0)
rl_ding ();
@ -428,7 +428,7 @@ region_kill_internal (delete)
/* Copy the text in the region to the kill ring. */
int
rl_copy_region_to_kill (count, ignore)
int count, ignore;
int count __attribute__((unused)), ignore __attribute__((unused));
{
return (region_kill_internal (0));
}
@ -436,7 +436,7 @@ rl_copy_region_to_kill (count, ignore)
/* Kill the text between the point and mark. */
int
rl_kill_region (count, ignore)
int count, ignore;
int count __attribute__((unused)), ignore __attribute__((unused));
{
int r, npoint;
@ -501,7 +501,7 @@ rl_copy_backward_word (count, key)
/* Yank back the last killed text. This ignores arguments. */
int
rl_yank (count, ignore)
int count, ignore;
int count __attribute__((unused)), ignore __attribute__((unused));
{
if (rl_kill_ring == 0)
{
@ -520,7 +520,7 @@ rl_yank (count, ignore)
yank back some other text. */
int
rl_yank_pop (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
int l, n;

View File

@ -201,7 +201,7 @@ _rl_kill_kbd_macro ()
re-executing the existing macro. */
int
rl_start_kbd_macro (ignore1, ignore2)
int ignore1, ignore2;
int ignore1 __attribute__((unused)), ignore2 __attribute__((unused));
{
if (RL_ISSTATE (RL_STATE_MACRODEF))
{
@ -226,7 +226,7 @@ rl_start_kbd_macro (ignore1, ignore2)
that many times, counting the definition as the first time. */
int
rl_end_kbd_macro (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
{
@ -246,7 +246,7 @@ rl_end_kbd_macro (count, ignore)
COUNT says how many times to execute it. */
int
rl_call_last_kbd_macro (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
if (current_macro == 0)
_rl_abort_internal ();

View File

@ -346,8 +346,8 @@ _rl_char_value (buf, ind)
#undef _rl_find_next_mbchar
int
_rl_find_next_mbchar (string, seed, count, flags)
char *string;
int seed, count, flags;
char *string __attribute__((unused));
int seed, count, flags __attribute__((unused));
{
#if defined (HANDLE_MULTIBYTE)
return _rl_find_next_mbchar_internal (string, seed, count, flags);
@ -362,8 +362,8 @@ _rl_find_next_mbchar (string, seed, count, flags)
#undef _rl_find_prev_mbchar
int
_rl_find_prev_mbchar (string, seed, flags)
char *string;
int seed, flags;
char *string __attribute__((unused));
int seed, flags __attribute__((unused));
{
#if defined (HANDLE_MULTIBYTE)
return _rl_find_prev_mbchar_internal (string, seed, flags);

View File

@ -228,7 +228,7 @@ _rl_reset_argument ()
/* Start a numeric argument with initial value KEY */
int
rl_digit_argument (ignore, key)
int ignore, key;
int ignore __attribute__((unused)), key;
{
_rl_arg_init ();
if (RL_ISSTATE (RL_STATE_CALLBACK))
@ -249,7 +249,7 @@ rl_digit_argument (ignore, key)
dispatch on it. If the key is the abort character then abort. */
int
rl_universal_argument (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
_rl_arg_init ();
rl_numeric_arg *= 4;
@ -413,7 +413,7 @@ _rl_history_set_point ()
void
rl_replace_from_history (entry, flags)
HIST_ENTRY *entry;
int flags; /* currently unused */
int flags __attribute__((unused)); /* currently unused */
{
/* Can't call with `1' because rl_undo_list might point to an undo list
from a history entry, just like we're setting up here. */
@ -440,7 +440,7 @@ rl_replace_from_history (entry, flags)
/* Meta-< goes to the start of the history. */
int
rl_beginning_of_history (count, key)
int count, key;
int count __attribute__((unused)), key;
{
return (rl_get_previous_history (1 + where_history (), key));
}
@ -448,7 +448,7 @@ rl_beginning_of_history (count, key)
/* Meta-> goes to the end of the history. (The current line). */
int
rl_end_of_history (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
rl_maybe_replace_line ();
using_history ();
@ -553,7 +553,7 @@ rl_get_previous_history (count, key)
/* How to toggle back and forth between editing modes. */
int
rl_vi_editing_mode (count, key)
int count, key;
int count __attribute__((unused)), key;
{
#if defined (VI_MODE)
_rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
@ -566,7 +566,7 @@ rl_vi_editing_mode (count, key)
int
rl_emacs_editing_mode (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
rl_editing_mode = emacs_mode;
_rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
@ -577,7 +577,7 @@ rl_emacs_editing_mode (count, key)
/* Function for the rest of the library to use to set insert/overwrite mode. */
void
_rl_set_insert_mode (im, force)
int im, force;
int im, force __attribute__((unused));
{
#ifdef CURSOR_MODE
_rl_set_cursor (im, force);
@ -590,7 +590,7 @@ _rl_set_insert_mode (im, force)
mode. A negative or zero explicit argument selects insert mode. */
int
rl_overwrite_mode (count, key)
int count, key;
int count, key __attribute__((unused));
{
if (rl_explicit_arg == 0)
_rl_set_insert_mode (rl_insert_mode ^ 1, 0);

View File

@ -101,7 +101,8 @@ _rl_init_eightbit ()
/* If we have setlocale(3), just check the current LC_CTYPE category
value, and go into eight-bit mode if it's not C or POSIX. */
#if defined (HAVE_SETLOCALE)
char *lspec, *t;
const char *lspec;
char *t;
/* Set the LC_CTYPE locale category from environment variables. */
lspec = _rl_get_locale_var ("LC_CTYPE");
@ -127,7 +128,8 @@ _rl_init_eightbit ()
return (0);
#else /* !HAVE_SETLOCALE */
char *lspec, *t;
const char *lspec;
char *t;
int i;
/* We don't have setlocale. Finesse it. Check the environment for the

View File

@ -90,7 +90,7 @@ static void bind_arrow_keys_internal PARAMS((Keymap));
static void bind_arrow_keys PARAMS((void));
static void readline_default_bindings PARAMS((void));
static void reset_default_bindings PARAMS((void));
static void reset_default_bindings PARAMS((void)) __attribute__((unused));
static int _rl_subseq_result PARAMS((int, Keymap, int, int));
static int _rl_subseq_getchar PARAMS((int));

View File

@ -304,7 +304,7 @@ extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *))
extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap));
extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap));
extern char *rl_variable_value PARAMS((const char *));
extern const char *rl_variable_value PARAMS((const char *));
extern int rl_variable_bind PARAMS((const char *, const char *));
/* Backwards compatibility, use rl_bind_keyseq_in_map instead. */
@ -343,7 +343,7 @@ extern void rl_set_keymap PARAMS((Keymap));
extern Keymap rl_get_keymap PARAMS((void));
/* Undocumented; used internally only. */
extern void rl_set_keymap_from_edit_mode PARAMS((void));
extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
extern const char *rl_get_keymap_name_from_edit_mode PARAMS((void));
/* Functions for manipulating the funmap, which maps command names to functions. */
extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *));
@ -406,7 +406,7 @@ extern void rl_set_screen_size PARAMS((int, int));
extern void rl_get_screen_size PARAMS((int *, int *));
extern void rl_reset_screen_size PARAMS((void));
extern char *rl_get_termcap PARAMS((const char *));
extern const char *rl_get_termcap PARAMS((const char *));
/* Functions for character input. */
extern int rl_stuff_char PARAMS((int));

View File

@ -77,7 +77,7 @@ typedef struct __rl_search_context
int sline_len;
int sline_index;
char *search_terminators;
const char *search_terminators;
} _rl_search_cxt;
/* Callback data for reading numeric arguments */
@ -164,7 +164,7 @@ extern int rl_set_retained_kills PARAMS((int));
extern void _rl_set_screen_size PARAMS((int, int));
/* undo.c */
extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
extern int _rl_fix_last_undo_of_type PARAMS((enum undo_code, int, int));
/* util.c */
extern char *_rl_savestring PARAMS((const char *));
@ -359,7 +359,7 @@ extern int _rl_vis_botlin;
extern int _rl_last_c_pos;
extern int _rl_suppress_redisplay;
extern int _rl_want_redisplay;
extern char *rl_display_prompt;
extern const char *rl_display_prompt;
/* isearch.c */
extern char *_rl_isearch_terminators;
@ -398,17 +398,17 @@ extern _rl_search_cxt *_rl_nscxt;
/* terminal.c */
extern int _rl_enable_keypad;
extern int _rl_enable_meta;
extern char *_rl_term_clreol;
extern char *_rl_term_clrpag;
extern char *_rl_term_im;
extern char *_rl_term_ic;
extern char *_rl_term_ei;
extern char *_rl_term_DC;
extern char *_rl_term_up;
extern char *_rl_term_dc;
extern char *_rl_term_cr;
extern char *_rl_term_IC;
extern char *_rl_term_forward_char;
extern const char *_rl_term_clreol;
extern const char *_rl_term_clrpag;
extern const char *_rl_term_im;
extern const char *_rl_term_ic;
extern const char *_rl_term_ei;
extern const char *_rl_term_DC;
extern const char *_rl_term_up;
extern const char *_rl_term_dc;
extern const char *_rl_term_cr;
extern const char *_rl_term_IC;
extern const char *_rl_term_forward_char;
extern int _rl_screenheight;
extern int _rl_screenwidth;
extern int _rl_screenchars;

View File

@ -765,7 +765,7 @@ rl_deprep_terminal ()
int
rl_restart_output (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
#if defined (__MINGW32__)
return 0;
@ -803,7 +803,7 @@ rl_restart_output (count, key)
int
rl_stop_output (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
#if defined (__MINGW32__)
return 0;

View File

@ -211,7 +211,7 @@ _rl_nsearch_init (dir, pchar)
rl_end = rl_point = 0;
p = _rl_make_prompt_for_search (pchar ? pchar : ':');
rl_message ("%s", p, 0);
rl_message ("%s", p);
free (p);
RL_SETSTATE(RL_STATE_NSEARCH);
@ -383,7 +383,7 @@ noninc_search (dir, pchar)
code calls this, KEY will be `?'. */
int
rl_noninc_forward_search (count, key)
int count, key;
int count __attribute__((unused)), key;
{
return noninc_search (1, (key == '?') ? '?' : 0);
}
@ -392,7 +392,7 @@ rl_noninc_forward_search (count, key)
calls this, KEY will be `/'. */
int
rl_noninc_reverse_search (count, key)
int count, key;
int count __attribute__((unused)), key;
{
return noninc_search (-1, (key == '/') ? '/' : 0);
}
@ -401,7 +401,7 @@ rl_noninc_reverse_search (count, key)
for. If there is no saved search string, abort. */
int
rl_noninc_forward_search_again (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
int r;
@ -418,7 +418,7 @@ rl_noninc_forward_search_again (count, key)
for. If there is no saved search string, abort. */
int
rl_noninc_reverse_search_again (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
int r;

View File

@ -104,34 +104,36 @@ char PC, *BC, *UP;
#endif /* __linux__ */
/* Some strings to control terminal actions. These are output by tputs (). */
char *_rl_term_clreol;
char *_rl_term_clrpag;
char *_rl_term_cr;
char *_rl_term_backspace;
char *_rl_term_goto;
char *_rl_term_pc;
const char *_rl_term_clreol;
const char *_rl_term_clrpag;
const char *_rl_term_cr;
const char *_rl_term_backspace;
char _rl_term_backspace_default[2] = { '\b', 0 };
const char *_rl_term_goto;
const char *_rl_term_pc;
/* Non-zero if we determine that the terminal can do character insertion. */
int _rl_terminal_can_insert = 0;
/* How to insert characters. */
char *_rl_term_im;
char *_rl_term_ei;
char *_rl_term_ic;
char *_rl_term_ip;
char *_rl_term_IC;
const char *_rl_term_im;
const char *_rl_term_ei;
const char *_rl_term_ic;
const char *_rl_term_ip;
const char *_rl_term_IC;
/* How to delete characters. */
char *_rl_term_dc;
char *_rl_term_DC;
const char *_rl_term_dc;
const char *_rl_term_DC;
char *_rl_term_forward_char;
const char *_rl_term_forward_char;
/* How to go up a line. */
char *_rl_term_up;
const char *_rl_term_up;
char _rl_term_up_default[2] = { 0, 0 };
/* A visible bell; char if the terminal can be made to flash the screen. */
static char *_rl_visible_bell;
static const char *_rl_visible_bell;
/* Non-zero means the terminal can auto-wrap lines. */
int _rl_term_autowrap = -1;
@ -141,33 +143,33 @@ static int term_has_meta;
/* The sequences to write to turn on and off the meta key, if this
terminal has one. */
static char *_rl_term_mm;
static char *_rl_term_mo;
static const char *_rl_term_mm;
static const char *_rl_term_mo;
/* The key sequences output by the arrow keys, if this terminal has any. */
static char *_rl_term_ku;
static char *_rl_term_kd;
static char *_rl_term_kr;
static char *_rl_term_kl;
static const char *_rl_term_ku;
static const char *_rl_term_kd;
static const char *_rl_term_kr;
static const char *_rl_term_kl;
/* How to initialize and reset the arrow keys, if this terminal has any. */
static char *_rl_term_ks;
static char *_rl_term_ke;
static const char *_rl_term_ks;
static const char *_rl_term_ke;
/* The key sequences sent by the Home and End keys, if any. */
static char *_rl_term_kh;
static char *_rl_term_kH;
static char *_rl_term_at7; /* @7 */
static const char *_rl_term_kh;
static const char *_rl_term_kH;
static const char *_rl_term_at7; /* @7 */
/* Delete key */
static char *_rl_term_kD;
static const char *_rl_term_kD;
/* Insert key */
static char *_rl_term_kI;
static const char *_rl_term_kI;
/* Cursor control */
static char *_rl_term_vs; /* very visible */
static char *_rl_term_ve; /* normal */
static const char *_rl_term_vs; /* very visible */
static const char *_rl_term_ve; /* normal */
static void bind_termcap_arrow_keys PARAMS((Keymap));
@ -362,7 +364,7 @@ rl_resize_terminal ()
struct _tc_string {
const char *tc_var;
char **tc_value;
const char **tc_value;
};
/* This should be kept sorted, just in case we decide to change the
@ -409,7 +411,7 @@ get_term_capabilities (bp)
char **bp;
{
#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */
register int i;
register unsigned int i;
for (i = 0; i < NUM_TC_STRINGS; i++)
*(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
@ -496,8 +498,9 @@ _rl_init_terminal_io (terminal_name)
tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
change that later... */
PC = '\0';
BC = _rl_term_backspace = "\b";
UP = _rl_term_up;
_rl_term_backspace = _rl_term_backspace_default;
BC = (char*)_rl_term_backspace;
UP = (char*)_rl_term_up;
return 0;
}
@ -507,8 +510,8 @@ _rl_init_terminal_io (terminal_name)
/* Set up the variables that the termcap library expects the application
to provide. */
PC = _rl_term_pc ? *_rl_term_pc : 0;
BC = _rl_term_backspace;
UP = _rl_term_up;
BC = (char*)_rl_term_backspace;
UP = (char*)_rl_term_up;
if (!_rl_term_cr)
_rl_term_cr = "\r";
@ -568,11 +571,11 @@ bind_termcap_arrow_keys (map)
_rl_keymap = xkeymap;
}
char *
const char *
rl_get_termcap (cap)
const char *cap;
{
register int i;
register unsigned int i;
if (tcap_initialized == 0)
return ((char *)NULL);

View File

@ -410,7 +410,7 @@ rl_backward (count, key)
/* Move to the beginning of the line. */
int
rl_beg_of_line (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
rl_point = 0;
return 0;
@ -419,7 +419,7 @@ rl_beg_of_line (count, key)
/* Move to the end of the line. */
int
rl_end_of_line (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
rl_point = rl_end;
return 0;
@ -527,7 +527,7 @@ rl_backward_word (count, key)
/* Clear the current line. Numeric argument to C-l does this. */
int
rl_refresh_line (ignore1, ignore2)
int ignore1, ignore2;
int ignore1 __attribute__((unused)), ignore2 __attribute__((unused));
{
int curr_line;
@ -566,7 +566,7 @@ rl_clear_screen (count, key)
int
rl_arrow_keys (count, c)
int count, c;
int count, c __attribute__((unused));
{
int ch;
@ -884,7 +884,7 @@ _rl_insert_next_callback (data)
int
rl_quoted_insert (count, key)
int count, key;
int count, key __attribute__((unused));
{
/* Let's see...should the callback interface futz with signal handling? */
#if defined (HANDLE_SIGNALS)
@ -907,7 +907,7 @@ rl_quoted_insert (count, key)
/* Insert a tab character. */
int
rl_tab_insert (count, key)
int count, key;
int count, key __attribute__((unused));
{
return (_rl_insert_char (count, '\t'));
}
@ -917,7 +917,7 @@ rl_tab_insert (count, key)
meaning in the future. */
int
rl_newline (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
rl_done = 1;
@ -951,7 +951,7 @@ rl_newline (count, key)
is special cased. */
int
rl_do_lowercase_version (ignore1, ignore2)
int ignore1, ignore2;
int ignore1 __attribute__((unused)), ignore2 __attribute__((unused));
{
return 0;
}
@ -1118,7 +1118,7 @@ rl_rubout_or_delete (count, key)
/* Delete all spaces and tabs around point. */
int
rl_delete_horizontal_space (count, ignore)
int count, ignore;
int count __attribute__((unused)), ignore __attribute__((unused));
{
int start = rl_point;
@ -1163,9 +1163,9 @@ rl_delete_or_show_completions (count, key)
A K*rn shell style function. */
int
rl_insert_comment (count, key)
int count, key;
int count __attribute__((unused)), key;
{
char *rl_comment_text;
const char *rl_comment_text;
int rl_comment_len;
rl_beg_of_line (1, key);
@ -1202,7 +1202,7 @@ rl_insert_comment (count, key)
/* Uppercase the word at point. */
int
rl_upcase_word (count, key)
int count, key;
int count, key __attribute__((unused));
{
return (rl_change_case (count, UpCase));
}
@ -1210,7 +1210,7 @@ rl_upcase_word (count, key)
/* Lowercase the word at point. */
int
rl_downcase_word (count, key)
int count, key;
int count, key __attribute__((unused));
{
return (rl_change_case (count, DownCase));
}
@ -1218,7 +1218,7 @@ rl_downcase_word (count, key)
/* Upcase the first letter, downcase the rest. */
int
rl_capitalize_word (count, key)
int count, key;
int count, key __attribute__((unused));
{
return (rl_change_case (count, CapCase));
}
@ -1381,7 +1381,7 @@ rl_transpose_words (count, key)
then transpose the characters before point. */
int
rl_transpose_chars (count, key)
int count, key;
int count, key __attribute__((unused));
{
#if defined (HANDLE_MULTIBYTE)
char *dummy;
@ -1557,7 +1557,7 @@ _rl_char_search_callback (data)
int
rl_char_search (count, key)
int count, key;
int count, key __attribute__((unused));
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
@ -1575,7 +1575,7 @@ rl_char_search (count, key)
int
rl_backward_char_search (count, key)
int count, key;
int count, key __attribute__((unused));
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
@ -1612,7 +1612,7 @@ _rl_set_mark_at_pos (position)
/* A bindable command to set the mark. */
int
rl_set_mark (count, key)
int count, key;
int count, key __attribute__((unused));
{
return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
}
@ -1620,7 +1620,7 @@ rl_set_mark (count, key)
/* Exchange the position of mark and point. */
int
rl_exchange_point_and_mark (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
if (rl_mark > rl_end)
rl_mark = -1;

View File

@ -196,7 +196,7 @@ tilde_expand (string)
int result_size, result_index;
result_index = result_size = 0;
if (result = strchr (string, '~'))
if ((result = strchr (string, '~')))
result = (char *)xmalloc (result_size = (strlen (string) + 16));
else
result = (char *)xmalloc (result_size = (strlen (string) + 1));

View File

@ -231,7 +231,8 @@ rl_do_undo ()
int
_rl_fix_last_undo_of_type (type, start, end)
int type, start, end;
enum undo_code type;
int start, end;
{
UNDO_LIST *rl;
@ -289,7 +290,7 @@ rl_modifying (start, end)
/* Revert the current line to its previous state. */
int
rl_revert_line (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
if (!rl_undo_list)
rl_ding ();
@ -309,7 +310,7 @@ rl_revert_line (count, key)
/* Do some undoing of things that were done. */
int
rl_undo_command (count, key)
int count, key;
int count, key __attribute__((unused));
{
if (count < 0)
return 0; /* Nothing to do. */

View File

@ -115,14 +115,14 @@ _rl_abort_internal ()
int
rl_abort (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
return (_rl_abort_internal ());
}
int
rl_tty_status (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
#if defined (TIOCSTAT)
ioctl (1, TIOCSTAT, (char *)0);
@ -172,7 +172,7 @@ rl_extend_line_buffer (len)
/* A function for simple tilde expansion. */
int
rl_tilde_expand (ignore, key)
int ignore, key;
int ignore __attribute__((unused)), key __attribute__((unused));
{
register int start, end;
char *homedir, *temp;

View File

@ -131,7 +131,7 @@ static int _rl_vi_callback_char_search PARAMS((_rl_callback_generic_arg *));
void
_rl_vi_initialize_line ()
{
register int i;
register size_t i;
for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++)
vi_mark_chars[i] = -1;
@ -190,7 +190,7 @@ _rl_vi_stuff_insert (count)
puts you back into insert mode. */
int
rl_vi_redo (count, c)
int count, c;
int count, c __attribute__((unused));
{
int r;
@ -238,7 +238,7 @@ rl_vi_undo (count, key)
/* Yank the nth arg from the previous line into this line at point. */
int
rl_vi_yank_arg (count, key)
int count, key;
int count, key __attribute__((unused));
{
/* Readline thinks that the first word on a line is the 0th, while vi
thinks the first word on a line is the 1st. Compensate. */
@ -321,7 +321,7 @@ rl_vi_search (count, key)
/* Completion, from vi's point of view. */
int
rl_vi_complete (ignore, key)
int ignore, key;
int ignore __attribute__((unused)), key;
{
if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
{
@ -348,7 +348,7 @@ rl_vi_complete (ignore, key)
/* Tilde expansion for vi mode. */
int
rl_vi_tilde_expand (ignore, key)
int ignore, key;
int ignore __attribute__((unused)), key;
{
rl_tilde_expand (0, key);
rl_vi_start_inserting (key, 1, rl_arg_sign);
@ -419,7 +419,7 @@ rl_vi_end_word (count, key)
/* Move forward a word the way that 'W' does. */
int
rl_vi_fWord (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
while (count-- && rl_point < (rl_end - 1))
{
@ -436,7 +436,7 @@ rl_vi_fWord (count, ignore)
int
rl_vi_bWord (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
while (count-- && rl_point > 0)
{
@ -460,7 +460,7 @@ rl_vi_bWord (count, ignore)
int
rl_vi_eWord (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
while (count-- && rl_point < (rl_end - 1))
{
@ -491,7 +491,7 @@ rl_vi_eWord (count, ignore)
int
rl_vi_fword (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
while (count-- && rl_point < (rl_end - 1))
{
@ -517,7 +517,7 @@ rl_vi_fword (count, ignore)
int
rl_vi_bword (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
while (count-- && rl_point > 0)
{
@ -556,7 +556,7 @@ rl_vi_bword (count, ignore)
int
rl_vi_eword (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
while (count-- && rl_point < rl_end - 1)
{
@ -581,7 +581,7 @@ rl_vi_eword (count, ignore)
int
rl_vi_insert_beg (count, key)
int count, key;
int count __attribute__((unused)), key;
{
rl_beg_of_line (1, key);
rl_vi_insertion_mode (1, key);
@ -610,7 +610,7 @@ _rl_vi_append_forward (key)
int
rl_vi_append_mode (count, key)
int count, key;
int count __attribute__((unused)), key;
{
_rl_vi_append_forward (key);
rl_vi_start_inserting (key, 1, rl_arg_sign);
@ -619,7 +619,7 @@ rl_vi_append_mode (count, key)
int
rl_vi_append_eol (count, key)
int count, key;
int count __attribute__((unused)), key;
{
rl_end_of_line (1, key);
rl_vi_append_mode (1, key);
@ -629,7 +629,7 @@ rl_vi_append_eol (count, key)
/* What to do in the case of C-d. */
int
rl_vi_eof_maybe (count, c)
int count, c;
int count __attribute__((unused)), c __attribute__((unused));
{
return (rl_newline (1, '\n'));
}
@ -640,7 +640,7 @@ rl_vi_eof_maybe (count, c)
switching keymaps. */
int
rl_vi_insertion_mode (count, key)
int count, key;
int count __attribute__((unused)), key;
{
_rl_keymap = vi_insertion_keymap;
_rl_vi_last_key_before_insert = key;
@ -703,7 +703,7 @@ _rl_vi_done_inserting ()
int
rl_vi_movement_mode (count, key)
int count, key;
int count __attribute__((unused)), key;
{
if (rl_point > 0)
rl_backward_char (1, key);
@ -783,7 +783,7 @@ _rl_vi_change_mbchar_case (count)
int
rl_vi_change_case (count, ignore)
int count, ignore;
int count, ignore __attribute__((unused));
{
int c, p;
@ -1031,7 +1031,7 @@ rl_digit_loop1 ()
int
rl_vi_delete_to (count, key)
int count, key;
int count __attribute__((unused)), key;
{
int c;
@ -1057,7 +1057,7 @@ rl_vi_delete_to (count, key)
int
rl_vi_change_to (count, key)
int count, key;
int count __attribute__((unused)), key;
{
int c, start_pos;
@ -1110,7 +1110,7 @@ rl_vi_change_to (count, key)
int
rl_vi_yank_to (count, key)
int count, key;
int count __attribute__((unused)), key;
{
int c, save;
@ -1202,7 +1202,7 @@ rl_vi_delete (count, key)
int
rl_vi_back_to_indent (count, key)
int count, key;
int count __attribute__((unused)), key;
{
rl_beg_of_line (1, key);
while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
@ -1212,7 +1212,7 @@ rl_vi_back_to_indent (count, key)
int
rl_vi_first_print (count, key)
int count, key;
int count __attribute__((unused)), key;
{
return (rl_vi_back_to_indent (1, key));
}
@ -1319,7 +1319,7 @@ rl_vi_char_search (count, key)
/* Match brackets */
int
rl_vi_match (ignore, key)
int ignore, key;
int ignore __attribute__((unused)), key;
{
int count = 1, brack, pos, tmp, pre;
@ -1426,7 +1426,7 @@ rl_vi_bracktype (c)
static int
_rl_vi_change_char (count, c, mb)
int count, c;
char *mb;
char *mb __attribute__((unused));
{
int p;
@ -1458,8 +1458,8 @@ _rl_vi_change_char (count, c, mb)
static int
_rl_vi_callback_getchar (mb, mlen)
char *mb;
int mlen;
char *mb __attribute__((unused));
int mlen __attribute__((unused));
{
int c;
@ -1494,7 +1494,7 @@ _rl_vi_callback_change_char (data)
int
rl_vi_change_char (count, key)
int count, key;
int count, key __attribute__((unused));
{
int c;
char mb[MB_LEN_MAX];
@ -1582,7 +1582,7 @@ rl_vi_overstrike_delete (count, key)
int
rl_vi_replace (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
int i;
@ -1663,7 +1663,7 @@ _rl_vi_set_mark ()
#if defined (READLINE_CALLBACKS)
static int
_rl_vi_callback_set_mark (data)
_rl_callback_generic_arg *data;
_rl_callback_generic_arg *data __attribute__((unused));
{
_rl_callback_func = 0;
_rl_want_redisplay = 1;
@ -1674,7 +1674,7 @@ _rl_vi_callback_set_mark (data)
int
rl_vi_set_mark (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
@ -1721,7 +1721,7 @@ _rl_vi_goto_mark ()
#if defined (READLINE_CALLBACKS)
static int
_rl_vi_callback_goto_mark (data)
_rl_callback_generic_arg *data;
_rl_callback_generic_arg *data __attribute__((unused));
{
_rl_callback_func = 0;
_rl_want_redisplay = 1;
@ -1732,7 +1732,7 @@ _rl_vi_callback_goto_mark (data)
int
rl_vi_goto_mark (count, key)
int count, key;
int count __attribute__((unused)), key __attribute__((unused));
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))

View File

@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line!
# remember to also change ndb version below and update version.c in ndb
AM_INIT_AUTOMAKE(mysql, 5.0.84)
AM_INIT_AUTOMAKE(mysql, 5.0.85)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
# ndb version
NDB_VERSION_MAJOR=5
NDB_VERSION_MINOR=0
NDB_VERSION_BUILD=84
NDB_VERSION_BUILD=85
NDB_VERSION_STATUS=""
# Set all version vars based on $VERSION. How do we do this more elegant ?
@ -1756,7 +1756,7 @@ esac
# Build optimized or debug version ?
# First check for gcc and g++
if test "$ac_cv_prog_gcc" = "yes"
if test "$GCC" = "yes"
then
DEBUG_CFLAGS="-g"
DEBUG_OPTIMIZE_CC="-O"
@ -1764,9 +1764,16 @@ then
else
DEBUG_CFLAGS="-g"
DEBUG_OPTIMIZE_CC=""
OPTIMIZE_CFLAGS="-O"
case $SYSTEM_TYPE in
*solaris*)
OPTIMIZE_CFLAGS="-O1"
;;
*)
OPTIMIZE_CFLAGS="-O"
;;
esac
fi
if test "$ac_cv_prog_cxx_g" = "yes"
if test "$GXX" = "yes"
then
DEBUG_CXXFLAGS="-g"
DEBUG_OPTIMIZE_CXX="-O"
@ -1774,7 +1781,14 @@ then
else
DEBUG_CXXFLAGS="-g"
DEBUG_OPTIMIZE_CXX=""
OPTIMIZE_CXXFLAGS="-O"
case $SYSTEM_TYPE in
*solaris*)
OPTIMIZE_CXXFLAGS="-O1"
;;
*)
OPTIMIZE_CXXFLAGS="-O"
;;
esac
fi
if expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null; then

View File

@ -790,15 +790,17 @@ void processReply(SSL& ssl)
if (ssl.GetError()) return;
if (DoProcessReply(ssl))
{
// didn't complete process
if (!ssl.getSocket().IsNonBlocking()) {
// keep trying now, blocking ok
while (!ssl.GetError())
if (DoProcessReply(ssl) == 0) break;
}
}
else
// user will have try again later, non blocking
ssl.SetError(YasslError(SSL_ERROR_WANT_READ));
}
}
@ -873,10 +875,12 @@ void sendServerKeyExchange(SSL& ssl, BufferOutput buffer)
void sendChangeCipher(SSL& ssl, BufferOutput buffer)
{
if (ssl.getSecurity().get_parms().entity_ == server_end)
{
if (ssl.getSecurity().get_resuming())
ssl.verifyState(clientKeyExchangeComplete);
else
ssl.verifyState(clientFinishedComplete);
}
if (ssl.GetError()) return;
ChangeCipherSpec ccs;

View File

@ -1272,6 +1272,7 @@ void ServerHello::Process(input_buffer&, SSL& ssl)
ssl.useSecurity().use_connection().sessionID_Set_ = false;
if (ssl.getSecurity().get_resuming())
{
if (memcmp(session_id_, ssl.getSecurity().get_resume().GetID(),
ID_LEN) == 0) {
ssl.set_masterSecret(ssl.getSecurity().get_resume().GetSecret());
@ -1286,6 +1287,7 @@ void ServerHello::Process(input_buffer&, SSL& ssl)
ssl.useSecurity().set_resuming(false);
ssl.useLog().Trace("server denied resumption");
}
}
if (ssl.CompressionOn() && !compression_method_)
ssl.UnSetCompression(); // server isn't supporting yaSSL zlib request

View File

@ -96,10 +96,12 @@ inline void Mode_BASE::Process(byte* out, const byte* in, word32 sz)
if (mode_ == ECB)
ECB_Process(out, in, sz);
else if (mode_ == CBC)
{
if (dir_ == ENCRYPTION)
CBC_Encrypt(out, in, sz);
else
CBC_Decrypt(out, in, sz);
}
}

View File

@ -781,10 +781,12 @@ void CertDecoder::GetDate(DateType dt)
source_.advance(length);
if (!ValidateDate(date, b, dt) && verify_)
{
if (dt == BEFORE)
source_.SetError(BEFORE_DATE_E);
else
source_.SetError(AFTER_DATE_E);
}
// save for later use
if (dt == BEFORE) {
@ -1062,6 +1064,7 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
}
word32 rLen = GetLength(source);
if (rLen != 20)
{
if (rLen == 21) { // zero at front, eat
source.next();
--rLen;
@ -1074,6 +1077,7 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
source.SetError(DSA_SZ_E);
return 0;
}
}
memcpy(decoded, source.get_buffer() + source.get_index(), rLen);
source.advance(rLen);
@ -1084,6 +1088,7 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
}
word32 sLen = GetLength(source);
if (sLen != 20)
{
if (sLen == 21) {
source.next(); // zero at front, eat
--sLen;
@ -1096,6 +1101,7 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
source.SetError(DSA_SZ_E);
return 0;
}
}
memcpy(decoded + rLen, source.get_buffer() + source.get_index(), sLen);
source.advance(sLen);

View File

@ -63,7 +63,7 @@ void hash_replace(HASH *hash, HASH_SEARCH_STATE *state, byte *new_row);
my_bool hash_check(HASH *hash); /* Only in debug library */
#define hash_clear(H) bzero((char*) (H),sizeof(*(H)))
#define hash_inited(H) ((H)->array.buffer != 0)
#define hash_inited(H) ((H)->blength != 0)
#define hash_init_opt(A,B,C,D,E,F,G,H) \
(!hash_inited(A) && _hash_init(A,B,C,D,E,F,G, H CALLER_INFO))

View File

@ -581,6 +581,8 @@ struct row_prebuilt_struct {
byte* ins_upd_rec_buff;/* buffer for storing data converted
to the Innobase format from the MySQL
format */
const void* default_rec; /* the default values of all columns
(a "default row") in MySQL format */
ulint hint_need_to_fetch_extra_cols;
/* normally this is set to 0; if this
is set to ROW_RETRIEVE_PRIMARY_KEY,

View File

@ -625,7 +625,11 @@ row_create_prebuilt(
prebuilt->ins_node = NULL;
prebuilt->ins_upd_rec_buff = NULL;
prebuilt->default_rec = NULL;
prebuilt->hint_need_to_fetch_extra_cols = 0;
prebuilt->upd_node = NULL;
prebuilt->ins_graph = NULL;
prebuilt->upd_graph = NULL;

View File

@ -2423,8 +2423,9 @@ row_sel_store_mysql_rec(
byte* data;
ulint len;
ulint i;
ut_ad(prebuilt->mysql_template);
ut_ad(prebuilt->default_rec);
ut_ad(rec_offs_validate(rec, NULL, offsets));
if (UNIV_LIKELY_NULL(prebuilt->blob_heap)) {
@ -2520,58 +2521,15 @@ row_sel_store_mysql_rec(
~(byte) (templ->mysql_null_bit_mask);
}
} else {
/* MySQL seems to assume the field for an SQL NULL
value is set to zero or space. Not taking this into
account caused seg faults with NULL BLOB fields, and
bug number 154 in the MySQL bug database: GROUP BY
and DISTINCT could treat NULL values inequal. */
int pad_char;
/* MySQL assumes that the field for an SQL
NULL value is set to the default value. */
mysql_rec[templ->mysql_null_byte_offset] |=
(byte) (templ->mysql_null_bit_mask);
switch (templ->type) {
case DATA_VARCHAR:
case DATA_BINARY:
case DATA_VARMYSQL:
if (templ->mysql_type
== DATA_MYSQL_TRUE_VARCHAR) {
/* This is a >= 5.0.3 type
true VARCHAR. Zero the field. */
pad_char = 0x00;
break;
}
/* Fall through */
case DATA_CHAR:
case DATA_FIXBINARY:
case DATA_MYSQL:
/* MySQL pads all string types (except
BLOB, TEXT and true VARCHAR) with space. */
if (UNIV_UNLIKELY(templ->mbminlen == 2)) {
/* Treat UCS2 as a special case. */
data = mysql_rec
+ templ->mysql_col_offset;
len = templ->mysql_col_len;
/* There are two UCS2 bytes per char,
so the length has to be even. */
ut_a(!(len & 1));
/* Pad with 0x0020. */
while (len) {
*data++ = 0x00;
*data++ = 0x20;
len -= 2;
}
continue;
}
pad_char = 0x20;
break;
default:
pad_char = 0x00;
break;
}
ut_ad(!pad_char || templ->mbminlen == 1);
memset(mysql_rec + templ->mysql_col_offset,
pad_char, templ->mysql_col_len);
memcpy(mysql_rec + templ->mysql_col_offset,
(const byte*) prebuilt->default_rec
+ templ->mysql_col_offset,
templ->mysql_col_len);
}
}

View File

@ -0,0 +1,14 @@
#
# Bug #46080: group_concat(... order by) crashes server when
# sort_buffer_size cannot allocate
#
CREATE TABLE t1(a CHAR(255));
INSERT INTO t1 VALUES ('a');
SET @@SESSION.sort_buffer_size=5*16*1000000;
SET @@SESSION.max_heap_table_size=5*1000000;
# Must not crash.
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
DROP TABLE t1;
SET @@SESSION.sort_buffer_size=default;
SET @@SESSION.max_heap_table_size=default;
End of 5.0 tests

View File

@ -68,7 +68,7 @@ Warnings:
Error 1259 ZLIB: Input data corrupted
Error 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted)
drop table t1;
set @@max_allowed_packet=1048576*100;
set @@global.max_allowed_packet=1048576*100;
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null
0

View File

@ -0,0 +1,9 @@
create table bug40565(value decimal(4,2)) engine=innodb;
insert into bug40565 values (1), (null);
update bug40565 set value=NULL;
affected rows: 1
info: Rows matched: 2 Changed: 1 Warnings: 0
update bug40565 set value=NULL;
affected rows: 0
info: Rows matched: 2 Changed: 0 Warnings: 0
drop table bug40565;

View File

@ -3,32 +3,22 @@ set @net_buffer_length=@@global.net_buffer_length;
set global max_allowed_packet=100;
Warnings:
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
set max_allowed_packet=100;
Warnings:
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
set global net_buffer_length=100;
Warnings:
Warning 1292 Truncated incorrect net_buffer_length value: '100'
set net_buffer_length=100;
Warnings:
Warning 1292 Truncated incorrect net_buffer_length value: '100'
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
len
1024
select repeat('a',2000);
repeat('a',2000)
NULL
Warnings:
Warning 1301 Result of repeat() was larger than max_allowed_packet (1024) - truncated
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
select @@net_buffer_length, @@max_allowed_packet;
@@net_buffer_length @@max_allowed_packet
1024 1024
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
ERROR 08S01: Got a packet bigger than 'max_allowed_packet' bytes
set global max_allowed_packet=default;
set max_allowed_packet=default;
set global net_buffer_length=default;
set net_buffer_length=default;
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
len
100

View File

@ -949,3 +949,4 @@ use test;
drop procedure mysqltestbug36570_p1;
drop procedure ` mysqltestbug36570_p2`;
drop function mysqltestbug36570_f1;
set global log_bin_trust_function_creators = 0;

View File

@ -10,24 +10,17 @@ declare c cursor for select f from t3 order by f desc limit 2;
open c;
fetch c into y;
fetch c into x;
close c;
insert into t3 values (x+y);
call fib(n-1);
## Close the cursor AFTER the recursion to ensure that the stack
## frame is somewhat intact.
close c;
end;
end if;
end|
set @@max_sp_recursion_depth= 20|
insert into t3 values (0), (1)|
call fib(3)|
select * from t3 order by f asc|
f
0
1
1
2
delete from t3|
insert into t3 values (0), (1)|
call fib(10)|
call fib(4)|
select * from t3 order by f asc|
f
0
@ -35,12 +28,6 @@ f
1
2
3
5
8
13
21
34
55
drop table t3|
drop procedure fib|
set @@max_sp_recursion_depth= 0|

View File

@ -187,7 +187,7 @@ Variable_name Value
myisam_max_sort_file_size FILE_SIZE
set global net_retry_count=10, session net_retry_count=10;
set global net_buffer_length=1024, net_write_timeout=200, net_read_timeout=300;
set session net_buffer_length=2048, net_write_timeout=500, net_read_timeout=600;
set session net_write_timeout=500, net_read_timeout=600;
show global variables like 'net_%';
Variable_name Value
net_buffer_length 1024
@ -196,35 +196,39 @@ net_retry_count 10
net_write_timeout 200
show session variables like 'net_%';
Variable_name Value
net_buffer_length 2048
net_buffer_length 16384
net_read_timeout 600
net_retry_count 10
net_write_timeout 500
set session net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
set global net_buffer_length=8000, net_read_timeout=900, net_write_timeout=1000;
show global variables like 'net_%';
Variable_name Value
net_buffer_length 1024
net_buffer_length 7168
net_read_timeout 900
net_retry_count 10
net_write_timeout 1000
show session variables like 'net_%';
Variable_name Value
net_buffer_length 7168
net_buffer_length 16384
net_read_timeout 600
net_retry_count 10
net_write_timeout 500
set net_buffer_length=1;
set global net_buffer_length=1;
Warnings:
Warning 1292 Truncated incorrect net_buffer_length value: '1'
show variables like 'net_buffer_length';
show global variables like 'net_buffer_length';
Variable_name Value
net_buffer_length 1024
set net_buffer_length=2000000000;
set global net_buffer_length=2000000000;
Warnings:
Warning 1292 Truncated incorrect net_buffer_length value: '2000000000'
show variables like 'net_buffer_length';
show global variables like 'net_buffer_length';
Variable_name Value
net_buffer_length 1048576
set session net_buffer_length=1024;
ERROR HY000: SESSION variable net_buffer_length is read-only. Use SET GLOBAL net_buffer_length to assign the value
set session max_allowed_packet=1024;
ERROR HY000: SESSION variable max_allowed_packet is read-only. Use SET GLOBAL max_allowed_packet to assign the value
set character set cp1251_koi8;
show variables like "character_set_client";
Variable_name Value
@ -393,7 +397,7 @@ set last_insert_id=1;
set global local_infile=1;
set long_query_time=100;
set low_priority_updates=1;
set max_allowed_packet=100;
set global max_allowed_packet=100;
Warnings:
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
set global max_binlog_cache_size=100;
@ -417,7 +421,7 @@ select @@max_user_connections;
100
set global max_write_lock_count=100;
set myisam_sort_buffer_size=100;
set net_buffer_length=100;
set global net_buffer_length=100;
Warnings:
Warning 1292 Truncated incorrect net_buffer_length value: '100'
set net_read_timeout=100;

View File

@ -3723,6 +3723,117 @@ DROP TABLE t1;
# -- End of test case for Bug#40825
#
# Bug #45806 crash when replacing into a view with a join!
#
CREATE TABLE t1(a INT UNIQUE);
CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
INSERT INTO t1 VALUES (1), (2);
REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
SELECT * FROM v1;
a
1
2
1
2
REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
SELECT * FROM v1;
a
1
2
3
1
2
3
1
2
3
DELETE FROM t1 WHERE a=3;
INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
SELECT * FROM v1;
a
1
2
1
2
CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
SELECT * FROM v2;
a
1
2
1
2
1
2
1
2
REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
SELECT * FROM v2;
a
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
SELECT * FROM v2;
a
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
DROP VIEW v1;
DROP VIEW v2;
DROP TABLE t1;
# -- End of test case for Bug#45806
# -----------------------------------------------------------------
# -- End of 5.0 tests.
# -----------------------------------------------------------------

View File

@ -0,0 +1,40 @@
DROP USER dbdict_test@localhost;
CREATE USER dbdict_test@localhost;
# Establish connection con (user=dbdict_test)
SELECT *
FROM information_schema.character_sets
WHERE character_set_name IN ('utf8','latin1','binary')
ORDER BY character_set_name;
CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
binary binary Binary pseudo charset 1
latin1 latin1_swedish_ci cp1252 West European 1
utf8 utf8_general_ci UTF-8 Unicode 3
SELECT *
FROM information_schema.collations
WHERE character_set_name IN ('utf8','latin1','binary')
AND (collation_name LIKE CONCAT(character_set_name,'_general_ci')
OR
collation_name LIKE CONCAT(character_set_name,'_bin'))
ORDER BY collation_name;
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
latin1_bin latin1 47 Yes 1
latin1_general_ci latin1 48 Yes 1
utf8_bin utf8 83 Yes 1
utf8_general_ci utf8 33 Yes Yes 1
SELECT *
FROM information_schema.collation_character_set_applicability
WHERE character_set_name IN ('utf8','latin1','binary')
AND (collation_name LIKE CONCAT(character_set_name,'_general_ci')
OR
collation_name LIKE CONCAT(character_set_name,'_bin'))
ORDER BY collation_name, character_set_name;
COLLATION_NAME CHARACTER_SET_NAME
latin1_bin latin1
latin1_general_ci latin1
utf8_bin utf8
utf8_general_ci utf8
# Switch to connection default + disconnect con
DROP USER dbdict_test@localhost;

View File

@ -1,309 +0,0 @@
DROP USER dbdict_test@localhost;
CREATE USER dbdict_test@localhost;
# Establish connection con (user=dbdict_test)
SELECT *
FROM information_schema.character_sets
ORDER BY character_set_name;
CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
armscii8 armscii8_general_ci ARMSCII-8 Armenian 1
ascii ascii_general_ci US ASCII 1
big5 big5_chinese_ci Big5 Traditional Chinese 2
binary binary Binary pseudo charset 1
cp1250 cp1250_general_ci Windows Central European 1
cp1251 cp1251_general_ci Windows Cyrillic 1
cp1256 cp1256_general_ci Windows Arabic 1
cp1257 cp1257_general_ci Windows Baltic 1
cp850 cp850_general_ci DOS West European 1
cp852 cp852_general_ci DOS Central European 1
cp866 cp866_general_ci DOS Russian 1
cp932 cp932_japanese_ci SJIS for Windows Japanese 2
dec8 dec8_swedish_ci DEC West European 1
eucjpms eucjpms_japanese_ci UJIS for Windows Japanese 3
euckr euckr_korean_ci EUC-KR Korean 2
gb2312 gb2312_chinese_ci GB2312 Simplified Chinese 2
gbk gbk_chinese_ci GBK Simplified Chinese 2
geostd8 geostd8_general_ci GEOSTD8 Georgian 1
greek greek_general_ci ISO 8859-7 Greek 1
hebrew hebrew_general_ci ISO 8859-8 Hebrew 1
hp8 hp8_english_ci HP West European 1
keybcs2 keybcs2_general_ci DOS Kamenicky Czech-Slovak 1
koi8r koi8r_general_ci KOI8-R Relcom Russian 1
koi8u koi8u_general_ci KOI8-U Ukrainian 1
latin1 latin1_swedish_ci cp1252 West European 1
latin2 latin2_general_ci ISO 8859-2 Central European 1
latin5 latin5_turkish_ci ISO 8859-9 Turkish 1
latin7 latin7_general_ci ISO 8859-13 Baltic 1
macce macce_general_ci Mac Central European 1
macroman macroman_general_ci Mac West European 1
sjis sjis_japanese_ci Shift-JIS Japanese 2
swe7 swe7_swedish_ci 7bit Swedish 1
tis620 tis620_thai_ci TIS620 Thai 1
ucs2 ucs2_general_ci UCS-2 Unicode 2
ujis ujis_japanese_ci EUC-JP Japanese 3
utf8 utf8_general_ci UTF-8 Unicode 3
SELECT *
FROM information_schema.collations
ORDER BY collation_name;
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
armscii8_bin armscii8 64 0
armscii8_general_ci armscii8 32 Yes 0
ascii_bin ascii 65 0
ascii_general_ci ascii 11 Yes 0
big5_bin big5 84 Yes 1
big5_chinese_ci big5 1 Yes Yes 1
binary binary 63 Yes Yes 1
cp1250_bin cp1250 66 Yes 1
cp1250_croatian_ci cp1250 44 Yes 1
cp1250_czech_cs cp1250 34 Yes 2
cp1250_general_ci cp1250 26 Yes Yes 1
cp1251_bin cp1251 50 0
cp1251_bulgarian_ci cp1251 14 0
cp1251_general_ci cp1251 51 Yes 0
cp1251_general_cs cp1251 52 0
cp1251_ukrainian_ci cp1251 23 0
cp1256_bin cp1256 67 0
cp1256_general_ci cp1256 57 Yes 0
cp1257_bin cp1257 58 0
cp1257_general_ci cp1257 59 Yes 0
cp1257_lithuanian_ci cp1257 29 0
cp850_bin cp850 80 0
cp850_general_ci cp850 4 Yes 0
cp852_bin cp852 81 0
cp852_general_ci cp852 40 Yes 0
cp866_bin cp866 68 0
cp866_general_ci cp866 36 Yes 0
cp932_bin cp932 96 Yes 1
cp932_japanese_ci cp932 95 Yes Yes 1
dec8_bin dec8 69 0
dec8_swedish_ci dec8 3 Yes 0
eucjpms_bin eucjpms 98 Yes 1
eucjpms_japanese_ci eucjpms 97 Yes Yes 1
euckr_bin euckr 85 Yes 1
euckr_korean_ci euckr 19 Yes Yes 1
gb2312_bin gb2312 86 Yes 1
gb2312_chinese_ci gb2312 24 Yes Yes 1
gbk_bin gbk 87 Yes 1
gbk_chinese_ci gbk 28 Yes Yes 1
geostd8_bin geostd8 93 0
geostd8_general_ci geostd8 92 Yes 0
greek_bin greek 70 0
greek_general_ci greek 25 Yes 0
hebrew_bin hebrew 71 0
hebrew_general_ci hebrew 16 Yes 0
hp8_bin hp8 72 0
hp8_english_ci hp8 6 Yes 0
keybcs2_bin keybcs2 73 0
keybcs2_general_ci keybcs2 37 Yes 0
koi8r_bin koi8r 74 0
koi8r_general_ci koi8r 7 Yes 0
koi8u_bin koi8u 75 0
koi8u_general_ci koi8u 22 Yes 0
latin1_bin latin1 47 Yes 1
latin1_danish_ci latin1 15 Yes 1
latin1_general_ci latin1 48 Yes 1
latin1_general_cs latin1 49 Yes 1
latin1_german1_ci latin1 5 Yes 1
latin1_german2_ci latin1 31 Yes 2
latin1_spanish_ci latin1 94 Yes 1
latin1_swedish_ci latin1 8 Yes Yes 1
latin2_bin latin2 77 Yes 1
latin2_croatian_ci latin2 27 Yes 1
latin2_czech_cs latin2 2 Yes 4
latin2_general_ci latin2 9 Yes Yes 1
latin2_hungarian_ci latin2 21 Yes 1
latin5_bin latin5 78 0
latin5_turkish_ci latin5 30 Yes 0
latin7_bin latin7 79 0
latin7_estonian_cs latin7 20 0
latin7_general_ci latin7 41 Yes 0
latin7_general_cs latin7 42 0
macce_bin macce 43 0
macce_general_ci macce 38 Yes 0
macroman_bin macroman 53 0
macroman_general_ci macroman 39 Yes 0
sjis_bin sjis 88 Yes 1
sjis_japanese_ci sjis 13 Yes Yes 1
swe7_bin swe7 82 0
swe7_swedish_ci swe7 10 Yes 0
tis620_bin tis620 89 Yes 1
tis620_thai_ci tis620 18 Yes Yes 4
ucs2_bin ucs2 90 Yes 1
ucs2_czech_ci ucs2 138 Yes 8
ucs2_danish_ci ucs2 139 Yes 8
ucs2_esperanto_ci ucs2 145 Yes 8
ucs2_estonian_ci ucs2 134 Yes 8
ucs2_general_ci ucs2 35 Yes Yes 1
ucs2_hungarian_ci ucs2 146 Yes 8
ucs2_icelandic_ci ucs2 129 Yes 8
ucs2_latvian_ci ucs2 130 Yes 8
ucs2_lithuanian_ci ucs2 140 Yes 8
ucs2_persian_ci ucs2 144 Yes 8
ucs2_polish_ci ucs2 133 Yes 8
ucs2_romanian_ci ucs2 131 Yes 8
ucs2_roman_ci ucs2 143 Yes 8
ucs2_slovak_ci ucs2 141 Yes 8
ucs2_slovenian_ci ucs2 132 Yes 8
ucs2_spanish2_ci ucs2 142 Yes 8
ucs2_spanish_ci ucs2 135 Yes 8
ucs2_swedish_ci ucs2 136 Yes 8
ucs2_turkish_ci ucs2 137 Yes 8
ucs2_unicode_ci ucs2 128 Yes 8
ujis_bin ujis 91 Yes 1
ujis_japanese_ci ujis 12 Yes Yes 1
utf8_bin utf8 83 Yes 1
utf8_czech_ci utf8 202 Yes 8
utf8_danish_ci utf8 203 Yes 8
utf8_esperanto_ci utf8 209 Yes 8
utf8_estonian_ci utf8 198 Yes 8
utf8_general_ci utf8 33 Yes Yes 1
utf8_hungarian_ci utf8 210 Yes 8
utf8_icelandic_ci utf8 193 Yes 8
utf8_latvian_ci utf8 194 Yes 8
utf8_lithuanian_ci utf8 204 Yes 8
utf8_persian_ci utf8 208 Yes 8
utf8_polish_ci utf8 197 Yes 8
utf8_romanian_ci utf8 195 Yes 8
utf8_roman_ci utf8 207 Yes 8
utf8_slovak_ci utf8 205 Yes 8
utf8_slovenian_ci utf8 196 Yes 8
utf8_spanish2_ci utf8 206 Yes 8
utf8_spanish_ci utf8 199 Yes 8
utf8_swedish_ci utf8 200 Yes 8
utf8_turkish_ci utf8 201 Yes 8
utf8_unicode_ci utf8 192 Yes 8
SELECT *
FROM information_schema.collation_character_set_applicability
ORDER BY collation_name, character_set_name;
COLLATION_NAME CHARACTER_SET_NAME
armscii8_bin armscii8
armscii8_general_ci armscii8
ascii_bin ascii
ascii_general_ci ascii
big5_bin big5
big5_chinese_ci big5
binary binary
cp1250_bin cp1250
cp1250_croatian_ci cp1250
cp1250_czech_cs cp1250
cp1250_general_ci cp1250
cp1251_bin cp1251
cp1251_bulgarian_ci cp1251
cp1251_general_ci cp1251
cp1251_general_cs cp1251
cp1251_ukrainian_ci cp1251
cp1256_bin cp1256
cp1256_general_ci cp1256
cp1257_bin cp1257
cp1257_general_ci cp1257
cp1257_lithuanian_ci cp1257
cp850_bin cp850
cp850_general_ci cp850
cp852_bin cp852
cp852_general_ci cp852
cp866_bin cp866
cp866_general_ci cp866
cp932_bin cp932
cp932_japanese_ci cp932
dec8_bin dec8
dec8_swedish_ci dec8
eucjpms_bin eucjpms
eucjpms_japanese_ci eucjpms
euckr_bin euckr
euckr_korean_ci euckr
gb2312_bin gb2312
gb2312_chinese_ci gb2312
gbk_bin gbk
gbk_chinese_ci gbk
geostd8_bin geostd8
geostd8_general_ci geostd8
greek_bin greek
greek_general_ci greek
hebrew_bin hebrew
hebrew_general_ci hebrew
hp8_bin hp8
hp8_english_ci hp8
keybcs2_bin keybcs2
keybcs2_general_ci keybcs2
koi8r_bin koi8r
koi8r_general_ci koi8r
koi8u_bin koi8u
koi8u_general_ci koi8u
latin1_bin latin1
latin1_danish_ci latin1
latin1_general_ci latin1
latin1_general_cs latin1
latin1_german1_ci latin1
latin1_german2_ci latin1
latin1_spanish_ci latin1
latin1_swedish_ci latin1
latin2_bin latin2
latin2_croatian_ci latin2
latin2_czech_cs latin2
latin2_general_ci latin2
latin2_hungarian_ci latin2
latin5_bin latin5
latin5_turkish_ci latin5
latin7_bin latin7
latin7_estonian_cs latin7
latin7_general_ci latin7
latin7_general_cs latin7
macce_bin macce
macce_general_ci macce
macroman_bin macroman
macroman_general_ci macroman
sjis_bin sjis
sjis_japanese_ci sjis
swe7_bin swe7
swe7_swedish_ci swe7
tis620_bin tis620
tis620_thai_ci tis620
ucs2_bin ucs2
ucs2_czech_ci ucs2
ucs2_danish_ci ucs2
ucs2_esperanto_ci ucs2
ucs2_estonian_ci ucs2
ucs2_general_ci ucs2
ucs2_hungarian_ci ucs2
ucs2_icelandic_ci ucs2
ucs2_latvian_ci ucs2
ucs2_lithuanian_ci ucs2
ucs2_persian_ci ucs2
ucs2_polish_ci ucs2
ucs2_romanian_ci ucs2
ucs2_roman_ci ucs2
ucs2_slovak_ci ucs2
ucs2_slovenian_ci ucs2
ucs2_spanish2_ci ucs2
ucs2_spanish_ci ucs2
ucs2_swedish_ci ucs2
ucs2_turkish_ci ucs2
ucs2_unicode_ci ucs2
ujis_bin ujis
ujis_japanese_ci ujis
utf8_bin utf8
utf8_czech_ci utf8
utf8_danish_ci utf8
utf8_esperanto_ci utf8
utf8_estonian_ci utf8
utf8_general_ci utf8
utf8_hungarian_ci utf8
utf8_icelandic_ci utf8
utf8_latvian_ci utf8
utf8_lithuanian_ci utf8
utf8_persian_ci utf8
utf8_polish_ci utf8
utf8_romanian_ci utf8
utf8_roman_ci utf8
utf8_slovak_ci utf8
utf8_slovenian_ci utf8
utf8_spanish2_ci utf8
utf8_spanish_ci utf8
utf8_swedish_ci utf8
utf8_turkish_ci utf8
utf8_unicode_ci utf8
# Switch to connection default + disconnect con
DROP USER dbdict_test@localhost;

View File

@ -1,311 +0,0 @@
DROP USER dbdict_test@localhost;
CREATE USER dbdict_test@localhost;
# Establish connection con (user=dbdict_test)
SELECT *
FROM information_schema.character_sets
ORDER BY character_set_name;
CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
armscii8 armscii8_general_ci ARMSCII-8 Armenian 1
ascii ascii_general_ci US ASCII 1
big5 big5_chinese_ci Big5 Traditional Chinese 2
binary binary Binary pseudo charset 1
cp1250 cp1250_general_ci Windows Central European 1
cp1251 cp1251_general_ci Windows Cyrillic 1
cp1256 cp1256_general_ci Windows Arabic 1
cp1257 cp1257_general_ci Windows Baltic 1
cp850 cp850_general_ci DOS West European 1
cp852 cp852_general_ci DOS Central European 1
cp866 cp866_general_ci DOS Russian 1
cp932 cp932_japanese_ci SJIS for Windows Japanese 2
dec8 dec8_swedish_ci DEC West European 1
eucjpms eucjpms_japanese_ci UJIS for Windows Japanese 3
euckr euckr_korean_ci EUC-KR Korean 2
gb2312 gb2312_chinese_ci GB2312 Simplified Chinese 2
gbk gbk_chinese_ci GBK Simplified Chinese 2
geostd8 geostd8_general_ci GEOSTD8 Georgian 1
greek greek_general_ci ISO 8859-7 Greek 1
hebrew hebrew_general_ci ISO 8859-8 Hebrew 1
hp8 hp8_english_ci HP West European 1
keybcs2 keybcs2_general_ci DOS Kamenicky Czech-Slovak 1
koi8r koi8r_general_ci KOI8-R Relcom Russian 1
koi8u koi8u_general_ci KOI8-U Ukrainian 1
latin1 latin1_swedish_ci cp1252 West European 1
latin2 latin2_general_ci ISO 8859-2 Central European 1
latin5 latin5_turkish_ci ISO 8859-9 Turkish 1
latin7 latin7_general_ci ISO 8859-13 Baltic 1
macce macce_general_ci Mac Central European 1
macroman macroman_general_ci Mac West European 1
sjis sjis_japanese_ci Shift-JIS Japanese 2
swe7 swe7_swedish_ci 7bit Swedish 1
tis620 tis620_thai_ci TIS620 Thai 1
ucs2 ucs2_general_ci UCS-2 Unicode 2
ujis ujis_japanese_ci EUC-JP Japanese 3
utf8 utf8_general_ci UTF-8 Unicode 3
SELECT *
FROM information_schema.collations
ORDER BY collation_name;
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
armscii8_bin armscii8 64 0
armscii8_general_ci armscii8 32 Yes 0
ascii_bin ascii 65 0
ascii_general_ci ascii 11 Yes 0
big5_bin big5 84 Yes 1
big5_chinese_ci big5 1 Yes Yes 1
binary binary 63 Yes Yes 1
cp1250_bin cp1250 66 Yes 1
cp1250_croatian_ci cp1250 44 Yes 1
cp1250_czech_cs cp1250 34 Yes 2
cp1250_general_ci cp1250 26 Yes Yes 1
cp1251_bin cp1251 50 0
cp1251_bulgarian_ci cp1251 14 0
cp1251_general_ci cp1251 51 Yes 0
cp1251_general_cs cp1251 52 0
cp1251_ukrainian_ci cp1251 23 0
cp1256_bin cp1256 67 0
cp1256_general_ci cp1256 57 Yes 0
cp1257_bin cp1257 58 0
cp1257_general_ci cp1257 59 Yes 0
cp1257_lithuanian_ci cp1257 29 0
cp850_bin cp850 80 0
cp850_general_ci cp850 4 Yes 0
cp852_bin cp852 81 0
cp852_general_ci cp852 40 Yes 0
cp866_bin cp866 68 0
cp866_general_ci cp866 36 Yes 0
cp932_bin cp932 96 Yes 1
cp932_japanese_ci cp932 95 Yes Yes 1
dec8_bin dec8 69 0
dec8_swedish_ci dec8 3 Yes 0
eucjpms_bin eucjpms 98 Yes 1
eucjpms_japanese_ci eucjpms 97 Yes Yes 1
euckr_bin euckr 85 Yes 1
euckr_korean_ci euckr 19 Yes Yes 1
gb2312_bin gb2312 86 Yes 1
gb2312_chinese_ci gb2312 24 Yes Yes 1
gbk_bin gbk 87 Yes 1
gbk_chinese_ci gbk 28 Yes Yes 1
geostd8_bin geostd8 93 0
geostd8_general_ci geostd8 92 Yes 0
greek_bin greek 70 0
greek_general_ci greek 25 Yes 0
hebrew_bin hebrew 71 0
hebrew_general_ci hebrew 16 Yes 0
hp8_bin hp8 72 0
hp8_english_ci hp8 6 Yes 0
keybcs2_bin keybcs2 73 0
keybcs2_general_ci keybcs2 37 Yes 0
koi8r_bin koi8r 74 0
koi8r_general_ci koi8r 7 Yes 0
koi8u_bin koi8u 75 0
koi8u_general_ci koi8u 22 Yes 0
latin1_bin latin1 47 Yes 1
latin1_danish_ci latin1 15 Yes 1
latin1_general_ci latin1 48 Yes 1
latin1_general_cs latin1 49 Yes 1
latin1_german1_ci latin1 5 Yes 1
latin1_german2_ci latin1 31 Yes 2
latin1_spanish_ci latin1 94 Yes 1
latin1_swedish_ci latin1 8 Yes Yes 1
latin2_bin latin2 77 Yes 1
latin2_croatian_ci latin2 27 Yes 1
latin2_czech_cs latin2 2 Yes 4
latin2_general_ci latin2 9 Yes Yes 1
latin2_hungarian_ci latin2 21 Yes 1
latin5_bin latin5 78 0
latin5_turkish_ci latin5 30 Yes 0
latin7_bin latin7 79 0
latin7_estonian_cs latin7 20 0
latin7_general_ci latin7 41 Yes 0
latin7_general_cs latin7 42 0
macce_bin macce 43 0
macce_general_ci macce 38 Yes 0
macroman_bin macroman 53 0
macroman_general_ci macroman 39 Yes 0
sjis_bin sjis 88 Yes 1
sjis_japanese_ci sjis 13 Yes Yes 1
swe7_bin swe7 82 0
swe7_swedish_ci swe7 10 Yes 0
tis620_bin tis620 89 Yes 1
tis620_thai_ci tis620 18 Yes Yes 4
ucs2_bin ucs2 90 Yes 1
ucs2_czech_ci ucs2 138 Yes 8
ucs2_danish_ci ucs2 139 Yes 8
ucs2_esperanto_ci ucs2 145 Yes 8
ucs2_estonian_ci ucs2 134 Yes 8
ucs2_general_ci ucs2 35 Yes Yes 1
ucs2_hungarian_ci ucs2 146 Yes 8
ucs2_icelandic_ci ucs2 129 Yes 8
ucs2_latvian_ci ucs2 130 Yes 8
ucs2_lithuanian_ci ucs2 140 Yes 8
ucs2_persian_ci ucs2 144 Yes 8
ucs2_polish_ci ucs2 133 Yes 8
ucs2_romanian_ci ucs2 131 Yes 8
ucs2_roman_ci ucs2 143 Yes 8
ucs2_slovak_ci ucs2 141 Yes 8
ucs2_slovenian_ci ucs2 132 Yes 8
ucs2_spanish2_ci ucs2 142 Yes 8
ucs2_spanish_ci ucs2 135 Yes 8
ucs2_swedish_ci ucs2 136 Yes 8
ucs2_turkish_ci ucs2 137 Yes 8
ucs2_unicode_ci ucs2 128 Yes 8
ujis_bin ujis 91 Yes 1
ujis_japanese_ci ujis 12 Yes Yes 1
utf8_bin utf8 83 Yes 1
utf8_czech_ci utf8 202 Yes 8
utf8_danish_ci utf8 203 Yes 8
utf8_esperanto_ci utf8 209 Yes 8
utf8_estonian_ci utf8 198 Yes 8
utf8_general_ci utf8 33 Yes Yes 1
utf8_general_cs utf8 254 Yes 1
utf8_hungarian_ci utf8 210 Yes 8
utf8_icelandic_ci utf8 193 Yes 8
utf8_latvian_ci utf8 194 Yes 8
utf8_lithuanian_ci utf8 204 Yes 8
utf8_persian_ci utf8 208 Yes 8
utf8_polish_ci utf8 197 Yes 8
utf8_romanian_ci utf8 195 Yes 8
utf8_roman_ci utf8 207 Yes 8
utf8_slovak_ci utf8 205 Yes 8
utf8_slovenian_ci utf8 196 Yes 8
utf8_spanish2_ci utf8 206 Yes 8
utf8_spanish_ci utf8 199 Yes 8
utf8_swedish_ci utf8 200 Yes 8
utf8_turkish_ci utf8 201 Yes 8
utf8_unicode_ci utf8 192 Yes 8
SELECT *
FROM information_schema.collation_character_set_applicability
ORDER BY collation_name, character_set_name;
COLLATION_NAME CHARACTER_SET_NAME
armscii8_bin armscii8
armscii8_general_ci armscii8
ascii_bin ascii
ascii_general_ci ascii
big5_bin big5
big5_chinese_ci big5
binary binary
cp1250_bin cp1250
cp1250_croatian_ci cp1250
cp1250_czech_cs cp1250
cp1250_general_ci cp1250
cp1251_bin cp1251
cp1251_bulgarian_ci cp1251
cp1251_general_ci cp1251
cp1251_general_cs cp1251
cp1251_ukrainian_ci cp1251
cp1256_bin cp1256
cp1256_general_ci cp1256
cp1257_bin cp1257
cp1257_general_ci cp1257
cp1257_lithuanian_ci cp1257
cp850_bin cp850
cp850_general_ci cp850
cp852_bin cp852
cp852_general_ci cp852
cp866_bin cp866
cp866_general_ci cp866
cp932_bin cp932
cp932_japanese_ci cp932
dec8_bin dec8
dec8_swedish_ci dec8
eucjpms_bin eucjpms
eucjpms_japanese_ci eucjpms
euckr_bin euckr
euckr_korean_ci euckr
gb2312_bin gb2312
gb2312_chinese_ci gb2312
gbk_bin gbk
gbk_chinese_ci gbk
geostd8_bin geostd8
geostd8_general_ci geostd8
greek_bin greek
greek_general_ci greek
hebrew_bin hebrew
hebrew_general_ci hebrew
hp8_bin hp8
hp8_english_ci hp8
keybcs2_bin keybcs2
keybcs2_general_ci keybcs2
koi8r_bin koi8r
koi8r_general_ci koi8r
koi8u_bin koi8u
koi8u_general_ci koi8u
latin1_bin latin1
latin1_danish_ci latin1
latin1_general_ci latin1
latin1_general_cs latin1
latin1_german1_ci latin1
latin1_german2_ci latin1
latin1_spanish_ci latin1
latin1_swedish_ci latin1
latin2_bin latin2
latin2_croatian_ci latin2
latin2_czech_cs latin2
latin2_general_ci latin2
latin2_hungarian_ci latin2
latin5_bin latin5
latin5_turkish_ci latin5
latin7_bin latin7
latin7_estonian_cs latin7
latin7_general_ci latin7
latin7_general_cs latin7
macce_bin macce
macce_general_ci macce
macroman_bin macroman
macroman_general_ci macroman
sjis_bin sjis
sjis_japanese_ci sjis
swe7_bin swe7
swe7_swedish_ci swe7
tis620_bin tis620
tis620_thai_ci tis620
ucs2_bin ucs2
ucs2_czech_ci ucs2
ucs2_danish_ci ucs2
ucs2_esperanto_ci ucs2
ucs2_estonian_ci ucs2
ucs2_general_ci ucs2
ucs2_hungarian_ci ucs2
ucs2_icelandic_ci ucs2
ucs2_latvian_ci ucs2
ucs2_lithuanian_ci ucs2
ucs2_persian_ci ucs2
ucs2_polish_ci ucs2
ucs2_romanian_ci ucs2
ucs2_roman_ci ucs2
ucs2_slovak_ci ucs2
ucs2_slovenian_ci ucs2
ucs2_spanish2_ci ucs2
ucs2_spanish_ci ucs2
ucs2_swedish_ci ucs2
ucs2_turkish_ci ucs2
ucs2_unicode_ci ucs2
ujis_bin ujis
ujis_japanese_ci ujis
utf8_bin utf8
utf8_czech_ci utf8
utf8_danish_ci utf8
utf8_esperanto_ci utf8
utf8_estonian_ci utf8
utf8_general_ci utf8
utf8_general_cs utf8
utf8_hungarian_ci utf8
utf8_icelandic_ci utf8
utf8_latvian_ci utf8
utf8_lithuanian_ci utf8
utf8_persian_ci utf8
utf8_polish_ci utf8
utf8_romanian_ci utf8
utf8_roman_ci utf8
utf8_slovak_ci utf8
utf8_slovenian_ci utf8
utf8_spanish2_ci utf8
utf8_spanish_ci utf8
utf8_swedish_ci utf8
utf8_turkish_ci utf8
utf8_unicode_ci utf8
# Switch to connection default + disconnect con
DROP USER dbdict_test@localhost;

View File

@ -1,309 +0,0 @@
DROP USER dbdict_test@localhost;
CREATE USER dbdict_test@localhost;
# Establish connection con (user=dbdict_test)
SELECT *
FROM information_schema.character_sets
ORDER BY character_set_name;
CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
armscii8 armscii8_general_ci ARMSCII-8 Armenian 1
ascii ascii_general_ci US ASCII 1
big5 big5_chinese_ci Big5 Traditional Chinese 2
binary binary Binary pseudo charset 1
cp1250 cp1250_general_ci Windows Central European 1
cp1251 cp1251_general_ci Windows Cyrillic 1
cp1256 cp1256_general_ci Windows Arabic 1
cp1257 cp1257_general_ci Windows Baltic 1
cp850 cp850_general_ci DOS West European 1
cp852 cp852_general_ci DOS Central European 1
cp866 cp866_general_ci DOS Russian 1
cp932 cp932_japanese_ci SJIS for Windows Japanese 2
dec8 dec8_swedish_ci DEC West European 1
eucjpms eucjpms_japanese_ci UJIS for Windows Japanese 3
euckr euckr_korean_ci EUC-KR Korean 2
gb2312 gb2312_chinese_ci GB2312 Simplified Chinese 2
gbk gbk_chinese_ci GBK Simplified Chinese 2
geostd8 geostd8_general_ci GEOSTD8 Georgian 1
greek greek_general_ci ISO 8859-7 Greek 1
hebrew hebrew_general_ci ISO 8859-8 Hebrew 1
hp8 hp8_english_ci HP West European 1
keybcs2 keybcs2_general_ci DOS Kamenicky Czech-Slovak 1
koi8r koi8r_general_ci KOI8-R Relcom Russian 1
koi8u koi8u_general_ci KOI8-U Ukrainian 1
latin1 latin1_swedish_ci cp1252 West European 1
latin2 latin2_general_ci ISO 8859-2 Central European 1
latin5 latin5_turkish_ci ISO 8859-9 Turkish 1
latin7 latin7_general_ci ISO 8859-13 Baltic 1
macce macce_general_ci Mac Central European 1
macroman macroman_general_ci Mac West European 1
sjis sjis_japanese_ci Shift-JIS Japanese 2
swe7 swe7_swedish_ci 7bit Swedish 1
tis620 tis620_thai_ci TIS620 Thai 1
ucs2 ucs2_general_ci UCS-2 Unicode 2
ujis ujis_japanese_ci EUC-JP Japanese 3
utf8 utf8_general_ci UTF-8 Unicode 3
SELECT *
FROM information_schema.collations
ORDER BY collation_name;
COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN
armscii8_bin armscii8 64 Yes 1
armscii8_general_ci armscii8 32 Yes Yes 1
ascii_bin ascii 65 Yes 1
ascii_general_ci ascii 11 Yes Yes 1
big5_bin big5 84 Yes 1
big5_chinese_ci big5 1 Yes Yes 1
binary binary 63 Yes Yes 1
cp1250_bin cp1250 66 Yes 1
cp1250_croatian_ci cp1250 44 Yes 1
cp1250_czech_cs cp1250 34 Yes 2
cp1250_general_ci cp1250 26 Yes Yes 1
cp1251_bin cp1251 50 Yes 1
cp1251_bulgarian_ci cp1251 14 Yes 1
cp1251_general_ci cp1251 51 Yes Yes 1
cp1251_general_cs cp1251 52 Yes 1
cp1251_ukrainian_ci cp1251 23 Yes 1
cp1256_bin cp1256 67 Yes 1
cp1256_general_ci cp1256 57 Yes Yes 1
cp1257_bin cp1257 58 Yes 1
cp1257_general_ci cp1257 59 Yes Yes 1
cp1257_lithuanian_ci cp1257 29 Yes 1
cp850_bin cp850 80 Yes 1
cp850_general_ci cp850 4 Yes Yes 1
cp852_bin cp852 81 Yes 1
cp852_general_ci cp852 40 Yes Yes 1
cp866_bin cp866 68 Yes 1
cp866_general_ci cp866 36 Yes Yes 1
cp932_bin cp932 96 Yes 1
cp932_japanese_ci cp932 95 Yes Yes 1
dec8_bin dec8 69 Yes 1
dec8_swedish_ci dec8 3 Yes Yes 1
eucjpms_bin eucjpms 98 Yes 1
eucjpms_japanese_ci eucjpms 97 Yes Yes 1
euckr_bin euckr 85 Yes 1
euckr_korean_ci euckr 19 Yes Yes 1
gb2312_bin gb2312 86 Yes 1
gb2312_chinese_ci gb2312 24 Yes Yes 1
gbk_bin gbk 87 Yes 1
gbk_chinese_ci gbk 28 Yes Yes 1
geostd8_bin geostd8 93 Yes 1
geostd8_general_ci geostd8 92 Yes Yes 1
greek_bin greek 70 Yes 1
greek_general_ci greek 25 Yes Yes 1
hebrew_bin hebrew 71 Yes 1
hebrew_general_ci hebrew 16 Yes Yes 1
hp8_bin hp8 72 Yes 1
hp8_english_ci hp8 6 Yes Yes 1
keybcs2_bin keybcs2 73 Yes 1
keybcs2_general_ci keybcs2 37 Yes Yes 1
koi8r_bin koi8r 74 Yes 1
koi8r_general_ci koi8r 7 Yes Yes 1
koi8u_bin koi8u 75 Yes 1
koi8u_general_ci koi8u 22 Yes Yes 1
latin1_bin latin1 47 Yes 1
latin1_danish_ci latin1 15 Yes 1
latin1_general_ci latin1 48 Yes 1
latin1_general_cs latin1 49 Yes 1
latin1_german1_ci latin1 5 Yes 1
latin1_german2_ci latin1 31 Yes 2
latin1_spanish_ci latin1 94 Yes 1
latin1_swedish_ci latin1 8 Yes Yes 1
latin2_bin latin2 77 Yes 1
latin2_croatian_ci latin2 27 Yes 1
latin2_czech_cs latin2 2 Yes 4
latin2_general_ci latin2 9 Yes Yes 1
latin2_hungarian_ci latin2 21 Yes 1
latin5_bin latin5 78 Yes 1
latin5_turkish_ci latin5 30 Yes Yes 1
latin7_bin latin7 79 Yes 1
latin7_estonian_cs latin7 20 Yes 1
latin7_general_ci latin7 41 Yes Yes 1
latin7_general_cs latin7 42 Yes 1
macce_bin macce 43 Yes 1
macce_general_ci macce 38 Yes Yes 1
macroman_bin macroman 53 Yes 1
macroman_general_ci macroman 39 Yes Yes 1
sjis_bin sjis 88 Yes 1
sjis_japanese_ci sjis 13 Yes Yes 1
swe7_bin swe7 82 Yes 1
swe7_swedish_ci swe7 10 Yes Yes 1
tis620_bin tis620 89 Yes 1
tis620_thai_ci tis620 18 Yes Yes 4
ucs2_bin ucs2 90 Yes 1
ucs2_czech_ci ucs2 138 Yes 8
ucs2_danish_ci ucs2 139 Yes 8
ucs2_esperanto_ci ucs2 145 Yes 8
ucs2_estonian_ci ucs2 134 Yes 8
ucs2_general_ci ucs2 35 Yes Yes 1
ucs2_hungarian_ci ucs2 146 Yes 8
ucs2_icelandic_ci ucs2 129 Yes 8
ucs2_latvian_ci ucs2 130 Yes 8
ucs2_lithuanian_ci ucs2 140 Yes 8
ucs2_persian_ci ucs2 144 Yes 8
ucs2_polish_ci ucs2 133 Yes 8
ucs2_romanian_ci ucs2 131 Yes 8
ucs2_roman_ci ucs2 143 Yes 8
ucs2_slovak_ci ucs2 141 Yes 8
ucs2_slovenian_ci ucs2 132 Yes 8
ucs2_spanish2_ci ucs2 142 Yes 8
ucs2_spanish_ci ucs2 135 Yes 8
ucs2_swedish_ci ucs2 136 Yes 8
ucs2_turkish_ci ucs2 137 Yes 8
ucs2_unicode_ci ucs2 128 Yes 8
ujis_bin ujis 91 Yes 1
ujis_japanese_ci ujis 12 Yes Yes 1
utf8_bin utf8 83 Yes 1
utf8_czech_ci utf8 202 Yes 8
utf8_danish_ci utf8 203 Yes 8
utf8_esperanto_ci utf8 209 Yes 8
utf8_estonian_ci utf8 198 Yes 8
utf8_general_ci utf8 33 Yes Yes 1
utf8_hungarian_ci utf8 210 Yes 8
utf8_icelandic_ci utf8 193 Yes 8
utf8_latvian_ci utf8 194 Yes 8
utf8_lithuanian_ci utf8 204 Yes 8
utf8_persian_ci utf8 208 Yes 8
utf8_polish_ci utf8 197 Yes 8
utf8_romanian_ci utf8 195 Yes 8
utf8_roman_ci utf8 207 Yes 8
utf8_slovak_ci utf8 205 Yes 8
utf8_slovenian_ci utf8 196 Yes 8
utf8_spanish2_ci utf8 206 Yes 8
utf8_spanish_ci utf8 199 Yes 8
utf8_swedish_ci utf8 200 Yes 8
utf8_turkish_ci utf8 201 Yes 8
utf8_unicode_ci utf8 192 Yes 8
SELECT *
FROM information_schema.collation_character_set_applicability
ORDER BY collation_name, character_set_name;
COLLATION_NAME CHARACTER_SET_NAME
armscii8_bin armscii8
armscii8_general_ci armscii8
ascii_bin ascii
ascii_general_ci ascii
big5_bin big5
big5_chinese_ci big5
binary binary
cp1250_bin cp1250
cp1250_croatian_ci cp1250
cp1250_czech_cs cp1250
cp1250_general_ci cp1250
cp1251_bin cp1251
cp1251_bulgarian_ci cp1251
cp1251_general_ci cp1251
cp1251_general_cs cp1251
cp1251_ukrainian_ci cp1251
cp1256_bin cp1256
cp1256_general_ci cp1256
cp1257_bin cp1257
cp1257_general_ci cp1257
cp1257_lithuanian_ci cp1257
cp850_bin cp850
cp850_general_ci cp850
cp852_bin cp852
cp852_general_ci cp852
cp866_bin cp866
cp866_general_ci cp866
cp932_bin cp932
cp932_japanese_ci cp932
dec8_bin dec8
dec8_swedish_ci dec8
eucjpms_bin eucjpms
eucjpms_japanese_ci eucjpms
euckr_bin euckr
euckr_korean_ci euckr
gb2312_bin gb2312
gb2312_chinese_ci gb2312
gbk_bin gbk
gbk_chinese_ci gbk
geostd8_bin geostd8
geostd8_general_ci geostd8
greek_bin greek
greek_general_ci greek
hebrew_bin hebrew
hebrew_general_ci hebrew
hp8_bin hp8
hp8_english_ci hp8
keybcs2_bin keybcs2
keybcs2_general_ci keybcs2
koi8r_bin koi8r
koi8r_general_ci koi8r
koi8u_bin koi8u
koi8u_general_ci koi8u
latin1_bin latin1
latin1_danish_ci latin1
latin1_general_ci latin1
latin1_general_cs latin1
latin1_german1_ci latin1
latin1_german2_ci latin1
latin1_spanish_ci latin1
latin1_swedish_ci latin1
latin2_bin latin2
latin2_croatian_ci latin2
latin2_czech_cs latin2
latin2_general_ci latin2
latin2_hungarian_ci latin2
latin5_bin latin5
latin5_turkish_ci latin5
latin7_bin latin7
latin7_estonian_cs latin7
latin7_general_ci latin7
latin7_general_cs latin7
macce_bin macce
macce_general_ci macce
macroman_bin macroman
macroman_general_ci macroman
sjis_bin sjis
sjis_japanese_ci sjis
swe7_bin swe7
swe7_swedish_ci swe7
tis620_bin tis620
tis620_thai_ci tis620
ucs2_bin ucs2
ucs2_czech_ci ucs2
ucs2_danish_ci ucs2
ucs2_esperanto_ci ucs2
ucs2_estonian_ci ucs2
ucs2_general_ci ucs2
ucs2_hungarian_ci ucs2
ucs2_icelandic_ci ucs2
ucs2_latvian_ci ucs2
ucs2_lithuanian_ci ucs2
ucs2_persian_ci ucs2
ucs2_polish_ci ucs2
ucs2_romanian_ci ucs2
ucs2_roman_ci ucs2
ucs2_slovak_ci ucs2
ucs2_slovenian_ci ucs2
ucs2_spanish2_ci ucs2
ucs2_spanish_ci ucs2
ucs2_swedish_ci ucs2
ucs2_turkish_ci ucs2
ucs2_unicode_ci ucs2
ujis_bin ujis
ujis_japanese_ci ujis
utf8_bin utf8
utf8_czech_ci utf8
utf8_danish_ci utf8
utf8_esperanto_ci utf8
utf8_estonian_ci utf8
utf8_general_ci utf8
utf8_hungarian_ci utf8
utf8_icelandic_ci utf8
utf8_latvian_ci utf8
utf8_lithuanian_ci utf8
utf8_persian_ci utf8
utf8_polish_ci utf8
utf8_romanian_ci utf8
utf8_roman_ci utf8
utf8_slovak_ci utf8
utf8_slovenian_ci utf8
utf8_spanish2_ci utf8
utf8_spanish_ci utf8
utf8_swedish_ci utf8
utf8_turkish_ci utf8
utf8_unicode_ci utf8
# Switch to connection default + disconnect con
DROP USER dbdict_test@localhost;

View File

@ -1,58 +1,16 @@
# suite/funcs_1/datadict/charset_collation.inc
# suite/funcs_1/t/charset_collation.test
#
# Tests checking the content of the information_schema tables
# character_sets
# collations
# collation_character_set_applicability
#
#
# The amount and properties of character_sets/collations depend on the
# build type
# 2007-12 MySQL 5.0, 2008-06 MySQL 5.1
# ---------------------------------------------------------------------
#
# Variant 1 fits to
# version_comment MySQL Enterprise Server (Commercial)
# version_comment MySQL Enterprise Server (GPL)
# version_comment MySQL Classic Server (Commercial)
# version_comment MySQL Pushbuild Edition, build <number>
# (version_comment Source distribution
# and
# compile was without "max" - > no collation 'utf8_general_ci')
#
# Variant 2 fits to
# version_comment MySQL Enterprise Server (GPL)
# version_comment MySQL Classic Server (Commercial)
# version_comment MySQL Pushbuild Edition, build <number>
# (version_comment Source distribution
# and
# compile was without "max" - > collation 'utf8_general_ci' exists)
#
# Difference between variant 1 and 2 is the collation 'utf8_general_ci'.
#
# Variant 3 fits to
# version_comment MySQL Community Server (GPL)
# version_comment MySQL Cluster Server (Commercial)
# version_comment MySQL Advanced Server (GPL) 5.1
# version_comment MySQL Advanced Server (Commercial) 5.1
#
# Difference between variant 3 and 2 is within the collation properties
# IS_COMPILED and SORTLEN.
#
# 2008-06 All time excluded variant is "vanilla".
# How to build "vanilla":
# ./BUILD/autorun.sh
# ./configure
# ./make
# Some properties of "vanilla"
# version_comment Source distribution
# Compared to the variants 1 to 3 a lot of character sets are missing.
# Example: "ucs2_bin" is in variant 1 to 3 but not in "vanilla".
#
# Created:
# 2007-12-18 mleich - remove the unstable character_set/collation subtests
# from include/datadict-master.inc
# - create this new test
# 2009-04-28 mleich Replace the charset_collation_* test which failed too often
# because of changes
# - in general available character sets and collations
# - in build types
# (Bug#40545, Bug#40209, Bug#40618, Bug#38346)
#
# Create a low privileged user.
@ -61,7 +19,6 @@ DROP USER dbdict_test@localhost;
CREATE USER dbdict_test@localhost;
--echo # Establish connection con (user=dbdict_test)
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
connect (con,localhost,dbdict_test,,);
################################################################################
#
@ -97,32 +54,48 @@ connect (con,localhost,dbdict_test,,);
# combinations for which the current user and PUBLIC have no
# USAGE privilege.
#
# Notes (2007-12-19 mleich):
# Notes (2009-04-28 mleich):
# - The requirements are outdated because grant/revoke privilege for using a
# characterset/collation were never implemented.
# Therefore the tests should simply check the content of these tables.
#
# Therefore the tests focus on the completeness and correctness of the
# content (rows and columns) of these tables.
# - The amount of collations/character sets grows with new MySQL releases.
#
# - Even within the same release the amount of records within these tables
# Even within the same release the amount of records within these tables
# can differ between different build types (community, enterprise, source,...)
#
# Therefore we limit the queries to character sets and collations which
# - exist in all build types
# - have in all build types the same "state".
# The character set
# - utf8 is used for Metadata
# - ascii is a quite usual
# The collations <character set>_general_ci and <character set>_bin seem
# to be available all time.
#
################################################################################
let $char_set_condition= character_set_name IN ('utf8','latin1','binary');
let $collation_condition=
(collation_name LIKE CONCAT(character_set_name,'_general_ci')
OR
collation_name LIKE CONCAT(character_set_name,'_bin'));
--echo
SELECT *
eval SELECT *
FROM information_schema.character_sets
WHERE $char_set_condition
ORDER BY character_set_name;
--echo
SELECT *
eval SELECT *
FROM information_schema.collations
WHERE $char_set_condition
AND $collation_condition
ORDER BY collation_name;
echo;
--echo
SELECT *
eval SELECT *
FROM information_schema.collation_character_set_applicability
WHERE $char_set_condition
AND $collation_condition
ORDER BY collation_name, character_set_name;

View File

@ -1,32 +0,0 @@
# Tests checking the content of the information_schema tables
# character_sets
# collations
# collation_character_set_applicability
#
# Content variant 1 which should fit to
# Enterprise or Classic builds (binaries provided by MySQL)
# Pushbuilds
# Source builds without "max"
#
# Please read suite/funcs_1/datadict/charset_collation.inc for
# additional information.
#
# Created:
# 2007-12-18 mleich - remove the unstable character_set/collation subtests
# from include/datadict-master.inc
# - create this new test
#
if (`SELECT EXISTS (SELECT 1 FROM information_schema.collations
WHERE collation_name = 'utf8_general_cs')
OR ( @@version_comment NOT LIKE '%Source%'
AND @@version_comment NOT LIKE '%Enterprise%'
AND @@version_comment NOT LIKE '%Classic%'
AND @@version_comment NOT LIKE '%Pushbuild%')
OR (SELECT count(*) = 0 FROM information_schema.collations
WHERE collation_name = 'ucs2_bin')`)
{
skip Test needs Enterprise, Classic , regular Pushbuild or Source-without-max build;
}
--source suite/funcs_1/datadict/charset_collation.inc

View File

@ -1,24 +0,0 @@
# Tests checking the content of the information_schema tables
# character_sets
# collations
# collation_character_set_applicability
#
# Content variant 2 (compile from source with "max")
#
# Please read suite/funcs_1/datadict/charset_collation.inc for
# additional information.
#
# Created:
# 2007-12-18 mleich - remove the unstable character_set/collation subtests
# from include/datadict-master.inc
# - create this new test
#
if (`SELECT @@version_comment NOT LIKE '%Source%'
OR NOT EXISTS (SELECT 1 FROM information_schema.collations
WHERE collation_name = 'utf8_general_cs')`)
{
skip Test needs Source build with "max";
}
--source suite/funcs_1/datadict/charset_collation.inc

View File

@ -1,25 +0,0 @@
# Tests checking the content of the information_schema tables
# character_sets
# collations
# collation_character_set_applicability
#
# Content variant 3 which should fit to
# Community and Cluster builds (binaries provided by MySQL)
#
# Please read suite/funcs_1/datadict/charset_collation.inc for
# additional information.
#
# Created:
# 2007-12-18 mleich - remove the unstable character_set/collation subtests
# from include/datadict-master.inc
# - create this new test
#
if (`SELECT @@version_comment NOT LIKE '%Community%'
AND @@version_comment NOT LIKE '%Cluster%'
AND @@version_comment NOT LIKE '%Advanced%'`)
{
skip Test needs Community, Cluster or Advanced build;
}
--source suite/funcs_1/datadict/charset_collation.inc

View File

@ -0,0 +1 @@
--skip-grant-tables --skip-name-resolve --safemalloc-mem-limit=4000000

View File

@ -0,0 +1,22 @@
--echo #
--echo # Bug #46080: group_concat(... order by) crashes server when
--echo # sort_buffer_size cannot allocate
--echo #
CREATE TABLE t1(a CHAR(255));
INSERT INTO t1 VALUES ('a');
SET @@SESSION.sort_buffer_size=5*16*1000000;
SET @@SESSION.max_heap_table_size=5*1000000;
--echo # Must not crash.
--disable_result_log
--error 0,5
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
--enable_result_log
DROP TABLE t1;
SET @@SESSION.sort_buffer_size=default;
SET @@SESSION.max_heap_table_size=default;
--echo End of 5.0 tests

View File

@ -18,3 +18,10 @@ im_options_unset : Bug#20294: Instance manager tests fail randomly
im_utils : Bug#20294: Instance manager tests fail randomly
rpl_log_pos : Bug#8693 Test 'rpl_log_pos' fails sometimes
kill : Bug#29149 Test "kill" fails on Windows
ps_7ndb : Bug#38315 "Cluster Failure" in ps_7ndb
strict_autoinc_5ndb : Bug#35148 "Error '4009 Cluster Failure' in various tests on various platforms"
rpl_slave_skip : Bug#45521: rpl_slave_skip fails in pb2
loaddata_autocom_ndb : Bug#35148: Error '4009 Cluster Failure' in various tests on various platforms
ndb_autodiscover3 : Bug#35148: Error '4009 Cluster Failure' in various tests on various platforms
ndb_autodiscover : Bug#45972: ndb.ndb_autodiscover fails occasionally with pb2
ndb_autodiscover2 : Bug#45972: ndb.ndb_autodiscover fails occasionally with pb2

View File

@ -43,8 +43,10 @@ drop table t1;
# note that when LOW_MEMORY is set the "test" below is meaningless
#
set @@max_allowed_packet=1048576*100;
set @@global.max_allowed_packet=1048576*100;
--replace_result "''" XXX "'1'" XXX
# reconnect to make the new max packet size take effect
--connect (newconn, localhost, root,,)
eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is null;
#

View File

@ -0,0 +1,10 @@
# Bug #40565 Update Query Results in "1 Row Affected" But Should Be "Zero Rows"
-- source include/have_innodb.inc
create table bug40565(value decimal(4,2)) engine=innodb;
insert into bug40565 values (1), (null);
--enable_info
update bug40565 set value=NULL;
update bug40565 set value=NULL;
--disable_info
drop table bug40565;

View File

@ -1,6 +1,7 @@
# Bug38499 flush tables and multitable table update with derived table cause crash
# MySQL >= 5.0
#
--source include/big_test.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc

View File

@ -15,31 +15,33 @@
set @max_allowed_packet=@@global.max_allowed_packet;
set @net_buffer_length=@@global.net_buffer_length;
# setting values below minimum threshold of 1024 will cause truncating
set global max_allowed_packet=100;
set global net_buffer_length=100;
# is not yet in effect
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
select repeat('a',2000);
#
# Connection 1 should get error for too big packets
#
connect (con1,localhost,root,,);
connection con1;
set global max_allowed_packet=100;
set max_allowed_packet=100;
set global net_buffer_length=100;
set net_buffer_length=100;
# Have to be > 1024 as min value of net_buffer_length is 1024
select @@net_buffer_length, @@max_allowed_packet;
--error ER_NET_PACKET_TOO_LARGE
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
# Should return NULL as 2000 is bigger than max_allowed_packet
select repeat('a',2000);
connection default;
disconnect con1;
#
# Connection 2 should get error for too big packets
# Reset to default values and reconnect
#
set global max_allowed_packet=default;
set global net_buffer_length=default;
connect (con2,localhost,root,,);
connection con2;
select @@net_buffer_length, @@max_allowed_packet;
--error ER_NET_PACKET_TOO_LARGE
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
set global max_allowed_packet=default;
set max_allowed_packet=default;
set global net_buffer_length=default;
set net_buffer_length=default;
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
select length(repeat('a',2000));
connection default;

View File

@ -7,6 +7,9 @@
# accepted). The old name could be removed in 5.1 or 6.0.
source include/master-slave.inc;
# Save the current value and restore at end of testing
let $log_bin_trust_function_creators=
`SELECT @@global.log_bin_trust_function_creators`;
# we need a db != test, where we don't have automatic grants
--disable_warnings
@ -629,3 +632,10 @@ use test;
drop procedure mysqltestbug36570_p1;
drop procedure ` mysqltestbug36570_p2`;
drop function mysqltestbug36570_f1;
# Cleanup
sync_slave_with_master;
# Restore the initial value of log_bin_trust_function_creators
eval
set global log_bin_trust_function_creators = $log_bin_trust_function_creators;

View File

@ -22,13 +22,14 @@ begin
begin
declare x, y bigint unsigned;
declare c cursor for select f from t3 order by f desc limit 2;
open c;
fetch c into y;
fetch c into x;
close c;
insert into t3 values (x+y);
call fib(n-1);
## Close the cursor AFTER the recursion to ensure that the stack
## frame is somewhat intact.
close c;
end;
end if;
end|
@ -36,24 +37,17 @@ end|
# Enable recursion
set @@max_sp_recursion_depth= 20|
# Minimum test: recursion of 3 levels
insert into t3 values (0), (1)|
call fib(3)|
# The small number of recursion levels is intentional.
# We need to avoid
# Bug#15866 main.sp fails (thread stack limit
# insufficient for recursive call "fib(20)")
# which affects some platforms.
call fib(4)|
select * from t3 order by f asc|
delete from t3|
# The original test, 20 levels, ran into memory limits on some machines
# and builds. Try 10 instead...
insert into t3 values (0), (1)|
call fib(10)|
select * from t3 order by f asc|
drop table t3|
drop procedure fib|
set @@max_sp_recursion_depth= 0|

View File

@ -131,17 +131,22 @@ show global variables like 'myisam_max_sort_file_size';
set global net_retry_count=10, session net_retry_count=10;
set global net_buffer_length=1024, net_write_timeout=200, net_read_timeout=300;
set session net_buffer_length=2048, net_write_timeout=500, net_read_timeout=600;
set session net_write_timeout=500, net_read_timeout=600;
show global variables like 'net_%';
show session variables like 'net_%';
set session net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
set global net_buffer_length=8000, net_read_timeout=900, net_write_timeout=1000;
show global variables like 'net_%';
show session variables like 'net_%';
set net_buffer_length=1;
show variables like 'net_buffer_length';
set global net_buffer_length=1;
show global variables like 'net_buffer_length';
#warning 1292
set net_buffer_length=2000000000;
show variables like 'net_buffer_length';
set global net_buffer_length=2000000000;
show global variables like 'net_buffer_length';
--error ER_UNKNOWN_ERROR
set session net_buffer_length=1024;
--error ER_UNKNOWN_ERROR
set session max_allowed_packet=1024;
set character set cp1251_koi8;
show variables like "character_set_client";
@ -272,7 +277,7 @@ set last_insert_id=1;
set global local_infile=1;
set long_query_time=100;
set low_priority_updates=1;
set max_allowed_packet=100;
set global max_allowed_packet=100;
set global max_binlog_cache_size=100;
set global max_binlog_size=100;
set global max_connect_errors=100;
@ -286,7 +291,7 @@ set global max_user_connections=100;
select @@max_user_connections;
set global max_write_lock_count=100;
set myisam_sort_buffer_size=100;
set net_buffer_length=100;
set global net_buffer_length=100;
set net_read_timeout=100;
set net_write_timeout=100;
set global query_cache_limit=100;

View File

@ -3703,6 +3703,38 @@ DROP TABLE t1;
--echo # -- End of test case for Bug#40825
--echo
--echo #
--echo # Bug #45806 crash when replacing into a view with a join!
--echo #
CREATE TABLE t1(a INT UNIQUE);
CREATE VIEW v1 AS SELECT t1.a FROM t1, t1 AS a;
INSERT INTO t1 VALUES (1), (2);
REPLACE INTO v1(a) SELECT 1 FROM t1,t1 AS c;
SELECT * FROM v1;
REPLACE INTO v1(a) SELECT 3 FROM t1,t1 AS c;
SELECT * FROM v1;
DELETE FROM t1 WHERE a=3;
INSERT INTO v1(a) SELECT 1 FROM t1,t1 AS c
ON DUPLICATE KEY UPDATE `v1`.`a`= 1;
SELECT * FROM v1;
CREATE VIEW v2 AS SELECT t1.a FROM t1, v1 AS a;
REPLACE INTO v2(a) SELECT 1 FROM t1,t1 AS c;
SELECT * FROM v2;
REPLACE INTO v2(a) SELECT 3 FROM t1,t1 AS c;
SELECT * FROM v2;
INSERT INTO v2(a) SELECT 1 FROM t1,t1 AS c
ON DUPLICATE KEY UPDATE `v2`.`a`= 1;
SELECT * FROM v2;
DROP VIEW v1;
DROP VIEW v2;
DROP TABLE t1;
--echo # -- End of test case for Bug#45806
--echo # -----------------------------------------------------------------
--echo # -- End of 5.0 tests.
--echo # -----------------------------------------------------------------

View File

@ -45,6 +45,32 @@ static uint calc_hash(const HASH *hash, const byte *key, uint length)
return nr1;
}
/**
@brief Initialize the hash
@details
Initialize the hash, by defining and giving valid values for
its elements. The failure to allocate memory for the
hash->array element will not result in a fatal failure. The
dynamic array that is part of the hash will allocate memory
as required during insertion.
@param[in,out] hash The hash that is initialized
@param[in] charset The charater set information
@param[in] size The hash size
@param[in] key_offest The key offset for the hash
@param[in] key_length The length of the key used in
the hash
@param[in] get_key get the key for the hash
@param[in] free_element pointer to the function that
does cleanup
@param[in] CALLER_INFO_PROTO flag that define the behaviour
of the hash
@return inidicates success or failure of initialization
@retval 0 success
@retval 1 failure
*/
my_bool
_hash_init(HASH *hash,CHARSET_INFO *charset,
uint size,uint key_offset,uint key_length,
@ -55,11 +81,6 @@ _hash_init(HASH *hash,CHARSET_INFO *charset,
DBUG_PRINT("enter",("hash: 0x%lx size: %d", (long) hash, size));
hash->records=0;
if (my_init_dynamic_array_ci(&hash->array,sizeof(HASH_LINK),size,0))
{
hash->free=0; /* Allow call to hash_free */
DBUG_RETURN(1);
}
hash->key_offset=key_offset;
hash->key_length=key_length;
hash->blength=1;
@ -67,7 +88,8 @@ _hash_init(HASH *hash,CHARSET_INFO *charset,
hash->free=free_element;
hash->flags=flags;
hash->charset=charset;
DBUG_RETURN(0);
DBUG_RETURN(my_init_dynamic_array_ci(&hash->array,
sizeof(HASH_LINK), size, 0));
}
@ -113,6 +135,7 @@ void hash_free(HASH *hash)
hash_free_elements(hash);
hash->free= 0;
delete_dynamic(&hash->array);
hash->blength= 0;
DBUG_VOID_RETURN;
}

View File

@ -1,7 +1,7 @@
#!/usr/bin/perl
use Getopt::Long;
use POSIX qw(strftime);
use POSIX qw(strftime getcwd);
$|=1;
$VER="2.16";
@ -295,6 +295,7 @@ sub start_mysqlds()
{
@options = defaults_for_group($groups[$i]);
$basedir_found= 0; # The default
$mysqld_found= 1; # The default
$mysqld_found= 0 if (!length($mysqld));
$com= "$mysqld";
@ -310,6 +311,14 @@ sub start_mysqlds()
$com= $options[$j];
$mysqld_found= 1;
}
elsif ("--basedir=" eq substr($options[$j], 0, 10))
{
$basedir= $options[$j];
$basedir =~ s/^--basedir=//;
$basedir_found= 1;
$options[$j]= quote_shell_word($options[$j]);
$tmp.= " $options[$j]";
}
else
{
$options[$j]= quote_shell_word($options[$j]);
@ -337,7 +346,16 @@ sub start_mysqlds()
print "group [$groups[$i]] separately.\n";
exit(1);
}
if ($basedir_found)
{
$curdir=getcwd();
chdir($basedir) or die "Can't change to datadir $basedir";
}
system($com);
if ($basedir_found)
{
chdir($curdir) or die "Can't change back to original dir $curdir";
}
}
if (!$i && !$opt_no_log)
{

View File

@ -145,8 +145,8 @@ int User_map::load(const char *password_file_name)
while (fgets(line, sizeof(line), file))
{
/* skip comments and empty lines */
if (line[0] == '#' || line[0] == '\n' &&
(line[1] == '\0' || line[1] == '\r'))
if (line[0] == '#' || (line[0] == '\n' &&
(line[1] == '\0' || line[1] == '\r')))
continue;
if ((user= new User) == 0)
goto done;

View File

@ -2253,6 +2253,9 @@ ha_innobase::open(
((row_prebuilt_t*)innobase_prebuilt)->mysql_row_len =
table->s->reclength;
((row_prebuilt_t*)innobase_prebuilt)->default_rec
= table->s->default_values;
ut_ad(table->s->default_values);
/* Looks like MySQL-3.23 sometimes has primary key number != 0 */

View File

@ -97,7 +97,7 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type,
if (!thd->vio_ok())
{
sql_print_error(msgbuf);
sql_print_error("%s", msgbuf);
return;
}

View File

@ -3291,8 +3291,13 @@ bool Item_func_group_concat::add()
TREE_ELEMENT *el= 0; // Only for safety
if (row_eligible && tree)
{
el= tree_insert(tree, table->record[0] + table->s->null_bytes, 0,
tree->custom_arg);
/* check if there was enough memory to insert the row */
if (!el)
return 1;
}
/*
If the row is not a duplicate (el->count == 1)
we can dump the row here in case of GROUP_CONCAT(DISTINCT...)

View File

@ -3096,7 +3096,7 @@ void Load_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info,
{
if (i)
fputc(',', file);
fprintf(file, field);
fprintf(file, "%s", field);
field += field_lens[i] + 1;
}
@ -5203,7 +5203,7 @@ void Execute_load_query_log_event::print(FILE* file,
{
my_fwrite(file, (byte*) query, fn_pos_start, MYF(MY_NABP | MY_WME));
fprintf(file, " LOCAL INFILE \'");
fprintf(file, local_fname);
fprintf(file, "%s", local_fname);
fprintf(file, "\'");
if (dup_handling == LOAD_DUP_REPLACE)
fprintf(file, " REPLACE");

View File

@ -228,8 +228,8 @@ sys_var_thd_bool sys_sql_low_priority_updates("sql_low_priority_updates",
&SV::low_priority_updates,
fix_low_priority_updates);
#endif
sys_var_thd_ulong sys_max_allowed_packet("max_allowed_packet",
&SV::max_allowed_packet);
sys_var_thd_ulong_session_readonly sys_max_allowed_packet("max_allowed_packet",
&SV::max_allowed_packet);
sys_var_long_ptr sys_max_binlog_cache_size("max_binlog_cache_size",
&max_binlog_cache_size);
sys_var_long_ptr sys_max_binlog_size("max_binlog_size",
@ -296,8 +296,8 @@ sys_var_thd_enum sys_myisam_stats_method("myisam_stats_method",
&myisam_stats_method_typelib,
NULL);
sys_var_thd_ulong sys_net_buffer_length("net_buffer_length",
&SV::net_buffer_length);
sys_var_thd_ulong_session_readonly sys_net_buffer_length("net_buffer_length",
&SV::net_buffer_length);
sys_var_thd_ulong sys_net_read_timeout("net_read_timeout",
&SV::net_read_timeout,
0, fix_net_read_timeout);
@ -2948,6 +2948,21 @@ byte *sys_var_max_user_conn::value_ptr(THD *thd, enum_var_type type,
}
bool sys_var_thd_ulong_session_readonly::check(THD *thd, set_var *var)
{
if (var->type != OPT_GLOBAL)
{
/* Due to backporting, this is actually ER_VARIABLE_IS_READONLY in 5.1+ */
my_printf_error(ER_UNKNOWN_ERROR,
"SESSION variable %s is read-only. Use SET GLOBAL %s "
"to assign the value", MYF(0), name, name);
return TRUE;
}
return sys_var_thd_ulong::check(thd, var);
}
bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var)
{
MY_LOCALE *locale_match;

View File

@ -873,6 +873,28 @@ public:
byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
};
/**
* @brief This is a specialization of sys_var_thd_ulong that implements a
read-only session variable. The class overrides check() and check_default()
to achieve the read-only property for the session part of the variable.
*/
class sys_var_thd_ulong_session_readonly : public sys_var_thd_ulong
{
public:
sys_var_thd_ulong_session_readonly(const char *name_arg, ulong SV::*offset_arg,
sys_check_func c_func= NULL,
sys_after_update_func au_func= NULL):
sys_var_thd_ulong(name_arg, offset_arg, c_func, au_func)
{ }
bool check(THD *thd, set_var *var);
bool check_default(enum_var_type type)
{
return type != OPT_GLOBAL || !option_limits;
}
};
class sys_var_trust_routine_creators :public sys_var_bool_ptr
{
/* We need a derived class only to have a warn_deprecated() */

View File

@ -1435,7 +1435,7 @@ static int get_master_version_and_clock(MYSQL* mysql, MASTER_INFO* mi)
if (errmsg)
{
sql_print_error(errmsg);
sql_print_error("%s", errmsg);
return 1;
}
@ -1558,7 +1558,7 @@ be equal for replication to work";
err:
if (errmsg)
{
sql_print_error(errmsg);
sql_print_error("%s", errmsg);
return 1;
}
@ -1968,7 +1968,7 @@ Failed to open the existing relay log info file '%s' (errno %d)",
DBUG_RETURN(error);
err:
sql_print_error(msg);
sql_print_error("%s", msg);
end_io_cache(&rli->info_file);
if (info_fd >= 0)
my_close(info_fd, MYF(0));

View File

@ -1148,6 +1148,33 @@ static bool mysql_prepare_insert_check_table(THD *thd, TABLE_LIST *table_list,
}
/*
Get extra info for tables we insert into
@param table table(TABLE object) we insert into,
might be NULL in case of view
@param table(TABLE_LIST object) or view we insert into
*/
static void prepare_for_positional_update(TABLE *table, TABLE_LIST *tables)
{
if (table)
{
if(table->reginfo.lock_type != TL_WRITE_DELAYED)
table->file->extra(HA_EXTRA_RETRIEVE_PRIMARY_KEY);
return;
}
DBUG_ASSERT(tables->view);
List_iterator<TABLE_LIST> it(*tables->view_tables);
TABLE_LIST *tbl;
while ((tbl= it++))
prepare_for_positional_update(tbl->table, tbl);
return;
}
/*
Prepare items in INSERT statement
@ -1298,9 +1325,8 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list,
Only call extra() handler method if we are not performing a DELAYED
operation. It will instead be executed by delayed insert thread.
*/
if ((duplic == DUP_UPDATE || duplic == DUP_REPLACE) &&
(table->reginfo.lock_type != TL_WRITE_DELAYED))
table->file->extra(HA_EXTRA_RETRIEVE_PRIMARY_KEY);
if (duplic == DUP_UPDATE || duplic == DUP_REPLACE)
prepare_for_positional_update(table, table_list);
DBUG_RETURN(FALSE);
}

View File

@ -363,7 +363,7 @@ int check_user(THD *thd, enum enum_server_command command,
if (opt_secure_auth_local && passwd_len == SCRAMBLE_LENGTH_323)
{
net_printf_error(thd, ER_NOT_SUPPORTED_AUTH_MODE);
mysql_log.write(thd, COM_CONNECT, ER(ER_NOT_SUPPORTED_AUTH_MODE));
mysql_log.write(thd, COM_CONNECT, "%s", ER(ER_NOT_SUPPORTED_AUTH_MODE));
DBUG_RETURN(-1);
}
if (passwd_len != 0 &&
@ -500,7 +500,7 @@ int check_user(THD *thd, enum enum_server_command command,
else if (res == 2) // client gave short hash, server has long hash
{
net_printf_error(thd, ER_NOT_SUPPORTED_AUTH_MODE);
mysql_log.write(thd,COM_CONNECT,ER(ER_NOT_SUPPORTED_AUTH_MODE));
mysql_log.write(thd,COM_CONNECT,"%s",ER(ER_NOT_SUPPORTED_AUTH_MODE));
DBUG_RETURN(-1);
}
net_printf_error(thd, ER_ACCESS_DENIED_ERROR,
@ -2096,7 +2096,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
}
if (check_access(thd,CREATE_ACL,db,0,1,0,is_schema_db(db)))
break;
mysql_log.write(thd,command,packet);
mysql_log.write(thd, command, "%s", db);
bzero(&create_info, sizeof(create_info));
mysql_create_db(thd, (lower_case_table_names == 2 ? alias : db),
&create_info, 0);
@ -2121,7 +2121,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
ER(ER_LOCK_OR_ACTIVE_TRANSACTION), MYF(0));
break;
}
mysql_log.write(thd,command,db);
mysql_log.write(thd, command, "%s", db);
mysql_rm_db(thd, db, 0, 0);
break;
}

View File

@ -144,7 +144,7 @@ static int send_file(THD *thd)
if (errmsg)
{
sql_print_error("Failed in send_file() %s", errmsg);
DBUG_PRINT("error", (errmsg));
DBUG_PRINT("error", ("%s", errmsg));
}
DBUG_RETURN(error);
}

View File

@ -2521,7 +2521,7 @@ send_result_message:
{
if (!thd->vio_ok())
{
sql_print_error(err_msg);
sql_print_error("%s", err_msg);
}
else
{

View File

@ -21,7 +21,7 @@
extern "C" {
void sql_alloc_error_handler(void)
{
sql_print_error(ER(ER_OUT_OF_RESOURCES));
sql_print_error("%s", ER(ER_OUT_OF_RESOURCES));
THD *thd=current_thd;
if (thd)

View File

@ -306,7 +306,7 @@ int decimal_actual_fraction(decimal_t *from)
{
for (i= DIG_PER_DEC1 - ((frac - 1) % DIG_PER_DEC1);
*buf0 % powers10[i++] == 0;
frac--);
frac--) ;
}
return frac;
}
@ -500,7 +500,7 @@ static void digits_bounds(decimal_t *from, int *start_result, int *end_result)
stop= (int) ((buf_end - from->buf + 1) * DIG_PER_DEC1);
i= 1;
}
for (; *buf_end % powers10[i++] == 0; stop--);
for (; *buf_end % powers10[i++] == 0; stop--) ;
*end_result= stop; /* index of position after last decimal digit (from 0) */
}
@ -1005,7 +1005,7 @@ static int ull2dec(ulonglong from, decimal_t *to)
sanity(to);
for (intg1=1; from >= DIG_BASE; intg1++, from/=DIG_BASE);
for (intg1=1; from >= DIG_BASE; intg1++, from/=DIG_BASE) ;
if (unlikely(intg1 > to->len))
{
intg1=to->len;

View File

@ -12063,6 +12063,27 @@ static void test_bug6081()
}
/*
Verify that bogus database names are handled properly with
COM_CREATE_DB and COM_DROP_DB, i.e., cannot cause SIGSEGV through
the use of printf specifiers in the database name.
*/
static void test_bug45790()
{
const char* bogus_db = "%s%s%s%s%s%s%s";
int rc;
myheader("test_bug45790");
rc= simple_command(mysql, COM_CREATE_DB, bogus_db,
(ulong)strlen(bogus_db), 0);
myquery(rc);
rc= simple_command(mysql, COM_DROP_DB, bogus_db,
(ulong)strlen(bogus_db), 0);
myquery(rc);
}
static void test_bug6096()
{
MYSQL_STMT *stmt;
@ -16829,6 +16850,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug6059", test_bug6059 },
{ "test_bug6046", test_bug6046 },
{ "test_bug6081", test_bug6081 },
{ "test_bug45790",test_bug45790 },
{ "test_bug6096", test_bug6096 },
{ "test_datetime_ranges", test_datetime_ranges },
{ "test_bug4172", test_bug4172 },