Commit 18f63cbc authored by Alexander Barkov's avatar Alexander Barkov

A postfix for Bug#46633 Obsolete Serbian locale name

Re-Allowing sr_YU with a "deprecated" warning.
parent eff49de2
......@@ -49,11 +49,18 @@ DROP TABLE t1;
#
# Bug#46633 Obsolete Serbian locale name
#
set lc_messages=sr_YU;
ERROR HY000: Unknown locale: 'sr_YU'
set lc_messages=sr_RS;
set lc_time_names=sr_RS;
select format(123456.789, 3, 'sr_RS');
SET lc_messages=sr_YU;
Warnings:
Warning 1287 'sr_YU' is deprecated; use 'sr_RS' instead
SHOW VARIABLES LIKE 'lc_messages';
Variable_name Value
lc_messages sr_RS
SET lc_messages=sr_RS;
SHOW VARIABLES LIKE 'lc_messages';
Variable_name Value
lc_messages sr_RS
SET lc_time_names=sr_RS;
SELECT format(123456.789, 3, 'sr_RS');
format(123456.789, 3, 'sr_RS')
123456.789
End of 5.4 tests
......@@ -34,10 +34,11 @@ DROP TABLE t1;
--echo #
--echo # Bug#46633 Obsolete Serbian locale name
--echo #
--error ER_UNKNOWN_LOCALE
set lc_messages=sr_YU;
set lc_messages=sr_RS;
set lc_time_names=sr_RS;
select format(123456.789, 3, 'sr_RS');
SET lc_messages=sr_YU;
SHOW VARIABLES LIKE 'lc_messages';
SET lc_messages=sr_RS;
SHOW VARIABLES LIKE 'lc_messages';
SET lc_time_names=sr_RS;
SELECT format(123456.789, 3, 'sr_RS');
--echo End of 5.4 tests
......@@ -1733,6 +1733,24 @@ static TYPELIB my_locale_typelib_day_names_sr_RS =
{ array_elements(my_locale_day_names_sr_RS)-1, "", my_locale_day_names_sr_RS, NULL };
static TYPELIB my_locale_typelib_ab_day_names_sr_RS =
{ array_elements(my_locale_ab_day_names_sr_RS)-1, "", my_locale_ab_day_names_sr_RS, NULL };
MY_LOCALE my_locale_sr_YU /* Deprecated, use sr_RS instead */
(
48,
"sr_YU",
"Serbian - Yugoslavia",
FALSE,
&my_locale_typelib_month_names_sr_RS,
&my_locale_typelib_ab_month_names_sr_RS,
&my_locale_typelib_day_names_sr_RS,
&my_locale_typelib_ab_day_names_sr_RS,
9,
10,
'.', /* decimal point sr_RS */
'\0', /* thousands_sep sr_RS */
"\x80", /* grouping sr_RS */
&global_errmsgs[sr_RS]
);
MY_LOCALE my_locale_sr_RS
(
48,
......@@ -3347,6 +3365,13 @@ MY_LOCALE *my_locales[]=
};
MY_LOCALE *my_locales_deprecated[]=
{
&my_locale_sr_YU,
NULL
};
MY_LOCALE *my_locale_by_number(uint number)
{
MY_LOCALE *locale;
......@@ -3359,22 +3384,56 @@ MY_LOCALE *my_locale_by_number(uint number)
}
MY_LOCALE *my_locale_by_name(const char *name)
static MY_LOCALE*
my_locale_by_name(MY_LOCALE** locales, const char *name)
{
MY_LOCALE **locale;
for (locale= my_locales; *locale != NULL; locale++)
for (locale= locales; *locale != NULL; locale++)
{
if (!my_strcasecmp(&my_charset_latin1, (*locale)->name, name))
{
// Check that locale is on its correct position in the array
DBUG_ASSERT((*locale) == my_locales[(*locale)->number]);
return *locale;
}
}
return NULL;
}
MY_LOCALE *my_locale_by_name(const char *name)
{
MY_LOCALE *locale;
if ((locale= my_locale_by_name(my_locales, name)))
{
// Check that locale is on its correct position in the array
DBUG_ASSERT(locale == my_locales[locale->number]);
return locale;
}
else if ((locale= my_locale_by_name(my_locales_deprecated, name)))
{
THD *thd= current_thd;
/*
Replace the deprecated locale to the corresponding
'fresh' locale with the same ID.
*/
locale= my_locales[locale->number];
if (thd)
{
// Send a warning to the client
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_DEPRECATED_SYNTAX, ER(ER_WARN_DEPRECATED_SYNTAX),
name, locale->name);
}
else
{
// Send a warning to mysqld error log
sql_print_warning("The syntax '%s' is deprecated and will be removed. "
"Please use %s instead.",
name, locale->name);
}
}
return locale;
}
void cleanup_errmsgs()
{
for (MY_LOCALE_ERRMSGS *msgs= global_errmsgs; msgs->language; msgs++)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment