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
|
# Bug#46633 Obsolete Serbian locale name
|
||||||
#
|
#
|
||||||
set lc_messages=sr_YU;
|
SET lc_messages=sr_YU;
|
||||||
ERROR HY000: Unknown locale: 'sr_YU'
|
Warnings:
|
||||||
set lc_messages=sr_RS;
|
Warning 1287 'sr_YU' is deprecated; use 'sr_RS' instead
|
||||||
set lc_time_names=sr_RS;
|
SHOW VARIABLES LIKE 'lc_messages';
|
||||||
select format(123456.789, 3, 'sr_RS');
|
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')
|
format(123456.789, 3, 'sr_RS')
|
||||||
123456.789
|
123456.789
|
||||||
End of 5.4 tests
|
End of 5.4 tests
|
||||||
|
@ -34,10 +34,11 @@ DROP TABLE t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#46633 Obsolete Serbian locale name
|
--echo # Bug#46633 Obsolete Serbian locale name
|
||||||
--echo #
|
--echo #
|
||||||
--error ER_UNKNOWN_LOCALE
|
SET lc_messages=sr_YU;
|
||||||
set lc_messages=sr_YU;
|
SHOW VARIABLES LIKE 'lc_messages';
|
||||||
set lc_messages=sr_RS;
|
SET lc_messages=sr_RS;
|
||||||
set lc_time_names=sr_RS;
|
SHOW VARIABLES LIKE 'lc_messages';
|
||||||
select format(123456.789, 3, 'sr_RS');
|
SET lc_time_names=sr_RS;
|
||||||
|
SELECT format(123456.789, 3, 'sr_RS');
|
||||||
|
|
||||||
--echo End of 5.4 tests
|
--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 };
|
{ 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 =
|
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 };
|
{ 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
|
MY_LOCALE my_locale_sr_RS
|
||||||
(
|
(
|
||||||
48,
|
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 *my_locale_by_number(uint number)
|
||||||
{
|
{
|
||||||
MY_LOCALE *locale;
|
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;
|
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))
|
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 *locale;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return NULL;
|
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()
|
void cleanup_errmsgs()
|
||||||
{
|
{
|
||||||
for (MY_LOCALE_ERRMSGS *msgs= global_errmsgs; msgs->language; msgs++)
|
for (MY_LOCALE_ERRMSGS *msgs= global_errmsgs; msgs->language; msgs++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user