A postfix for Bug#46633 Obsolete Serbian locale name
Re-Allowing sr_YU with a "deprecated" warning.
This commit is contained in:
parent
eff49de23e
commit
18f63cbcb9
@ -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++)
|
||||
|
Loading…
x
Reference in New Issue
Block a user