diff options
-rw-r--r-- | mysql-test/r/locale.result | 96 | ||||
-rw-r--r-- | mysql-test/r/variables.result | 10 | ||||
-rw-r--r-- | mysql-test/suite/plugins/r/locales.result | 1 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/r/lc_time_names_basic.result | 6 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/t/lc_time_names_basic.test | 4 | ||||
-rw-r--r-- | mysql-test/t/locale.test | 57 | ||||
-rw-r--r-- | mysql-test/t/variables.test | 4 | ||||
-rw-r--r-- | sql/sql_locale.cc | 70 |
8 files changed, 239 insertions, 9 deletions
diff --git a/mysql-test/r/locale.result b/mysql-test/r/locale.result index aa61d8cd86f..1335f1ec9d5 100644 --- a/mysql-test/r/locale.result +++ b/mysql-test/r/locale.result @@ -90,3 +90,99 @@ SELECT DATE_FORMAT('2001-01-07', '%w %a %W'); DATE_FORMAT('2001-01-07', '%w %a %W') 0 Du Duminică End of 5.4 tests +# +# Start of 5.6 tests +# +# +# WL#5303 Romansh locale for DAYNAME, MONTHNAME, DATE_FORMAT +# +SET NAMES utf8; +SET @old_50915_lc_time_names := @@lc_time_names; +SET lc_time_names=en_US; +SELECT DATE_FORMAT('2001-01-01', '%w %a %W'); +DATE_FORMAT('2001-01-01', '%w %a %W') +1 Mon Monday +SELECT DATE_FORMAT('2001-03-01', '%c %b %M'); +DATE_FORMAT('2001-03-01', '%c %b %M') +3 Mar March +SET lc_time_names=rm_CH; +SELECT DATE_FORMAT('2001-01-01', '%w %a %W'); +DATE_FORMAT('2001-01-01', '%w %a %W') +1 gli glindesdi +SELECT DATE_FORMAT('2001-01-02', '%w %a %W'); +DATE_FORMAT('2001-01-02', '%w %a %W') +2 ma mardi +SELECT DATE_FORMAT('2001-01-03', '%w %a %W'); +DATE_FORMAT('2001-01-03', '%w %a %W') +3 me mesemna +SELECT DATE_FORMAT('2001-01-04', '%w %a %W'); +DATE_FORMAT('2001-01-04', '%w %a %W') +4 gie gievgia +SELECT DATE_FORMAT('2001-01-05', '%w %a %W'); +DATE_FORMAT('2001-01-05', '%w %a %W') +5 ve venderdi +SELECT DATE_FORMAT('2001-01-06', '%w %a %W'); +DATE_FORMAT('2001-01-06', '%w %a %W') +6 so sonda +SELECT DATE_FORMAT('2001-01-07', '%w %a %W'); +DATE_FORMAT('2001-01-07', '%w %a %W') +0 du dumengia +SELECT DATE_FORMAT('2001-01-01', '%c %b %M'); +DATE_FORMAT('2001-01-01', '%c %b %M') +1 schan schaner +SELECT DATE_FORMAT('2001-02-01', '%c %b %M'); +DATE_FORMAT('2001-02-01', '%c %b %M') +2 favr favrer +SELECT DATE_FORMAT('2001-03-01', '%c %b %M'); +DATE_FORMAT('2001-03-01', '%c %b %M') +3 mars mars +SELECT DATE_FORMAT('2001-04-01', '%c %b %M'); +DATE_FORMAT('2001-04-01', '%c %b %M') +4 avr avrigl +SELECT DATE_FORMAT('2001-05-01', '%c %b %M'); +DATE_FORMAT('2001-05-01', '%c %b %M') +5 matg matg +SELECT DATE_FORMAT('2001-06-01', '%c %b %M'); +DATE_FORMAT('2001-06-01', '%c %b %M') +6 zercl zercladur +SELECT DATE_FORMAT('2001-07-01', '%c %b %M'); +DATE_FORMAT('2001-07-01', '%c %b %M') +7 fan fanadur +SELECT DATE_FORMAT('2001-08-01', '%c %b %M'); +DATE_FORMAT('2001-08-01', '%c %b %M') +8 avust avust +SELECT DATE_FORMAT('2001-09-01', '%c %b %M'); +DATE_FORMAT('2001-09-01', '%c %b %M') +9 sett settember +SELECT DATE_FORMAT('2001-10-01', '%c %b %M'); +DATE_FORMAT('2001-10-01', '%c %b %M') +10 oct october +SELECT DATE_FORMAT('2001-11-01', '%c %b %M'); +DATE_FORMAT('2001-11-01', '%c %b %M') +11 nov november +SELECT DATE_FORMAT('2001-12-01', '%c %b %M'); +DATE_FORMAT('2001-12-01', '%c %b %M') +12 dec december +SET lc_time_names=de_CH; +SELECT DATE_FORMAT('2001-01-06', '%w %a %W'); +DATE_FORMAT('2001-01-06', '%w %a %W') +6 Sa Samstag +SELECT DATE_FORMAT('2001-09-01', '%c %b %M'); +DATE_FORMAT('2001-09-01', '%c %b %M') +9 Sep September +SELECT DATE_FORMAT('2010-03-23 11:00:00','%h %p'); +DATE_FORMAT('2010-03-23 11:00:00','%h %p') +11 AM +SELECT DATE_FORMAT('2010-03-23 13:00:00','%h %p'); +DATE_FORMAT('2010-03-23 13:00:00','%h %p') +01 PM +SELECT format(123456789,2,'rm_CH'); +format(123456789,2,'rm_CH') +123'456'789,00 +SET lc_messages=rm_CH; +SELECT * FROM non_existent; +ERROR 42S02: Table 'test.non_existent' doesn't exist +SET lc_time_names=@old_50915_lc_time_names; +# +# End of 5.6 tests +# diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index eb896082810..2ba64ed3003 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -801,16 +801,16 @@ select @@lc_time_names; @@lc_time_names en_US LC_TIME_NAMES: testing locale with the last ID: -set lc_time_names=109; +set lc_time_names=110; select @@lc_time_names; @@lc_time_names -el_GR +rm_CH LC_TIME_NAMES: testing a number beyond the valid ID range: -set lc_time_names=110; -ERROR HY000: Unknown locale: '110' +set lc_time_names=111; +ERROR HY000: Unknown locale: '111' select @@lc_time_names; @@lc_time_names -el_GR +rm_CH LC_TIME_NAMES: testing that 0 is en_US: set lc_time_names=0; select @@lc_time_names; diff --git a/mysql-test/suite/plugins/r/locales.result b/mysql-test/suite/plugins/r/locales.result index 45f80353697..9c65f8d6034 100644 --- a/mysql-test/suite/plugins/r/locales.result +++ b/mysql-test/suite/plugins/r/locales.result @@ -110,3 +110,4 @@ ID NAME DESCRIPTION MAX_MONTH_NAME_LENGTH MAX_DAY_NAME_LENGTH DECIMAL_POINT THOU 107 sv_FI Swedish - Finland 9 7 , swedish 108 zh_HK Chinese - Hong Kong SAR 3 3 . , english 109 el_GR Greek - Greece 11 9 , . greek +110 rm_CH Romansh - Switzerland 9 9 , ' english diff --git a/mysql-test/suite/sys_vars/r/lc_time_names_basic.result b/mysql-test/suite/sys_vars/r/lc_time_names_basic.result index e61436c0e47..ed03c3e6d94 100644 --- a/mysql-test/suite/sys_vars/r/lc_time_names_basic.result +++ b/mysql-test/suite/sys_vars/r/lc_time_names_basic.result @@ -1022,7 +1022,11 @@ SELECT @@lc_time_names; @@lc_time_names el_GR SET @@lc_time_names = 110; -ERROR HY000: Unknown locale: '110' +SELECT @@lc_time_names; +@@lc_time_names +rm_CH +SET @@lc_time_names = 111; +ERROR HY000: Unknown locale: '111' '#--------------------FN_DYNVARS_060_10-------------------------#' SET @@lc_time_names = en_EN; ERROR HY000: Unknown locale: 'en_EN' diff --git a/mysql-test/suite/sys_vars/t/lc_time_names_basic.test b/mysql-test/suite/sys_vars/t/lc_time_names_basic.test index 68ee00b6ee0..c66bdc40a02 100644 --- a/mysql-test/suite/sys_vars/t/lc_time_names_basic.test +++ b/mysql-test/suite/sys_vars/t/lc_time_names_basic.test @@ -622,8 +622,10 @@ SET @@lc_time_names = 108; SELECT @@lc_time_names; SET @@lc_time_names = 109; SELECT @@lc_time_names; ---Error ER_UNKNOWN_LOCALE SET @@lc_time_names = 110; +SELECT @@lc_time_names; +--Error ER_UNKNOWN_LOCALE +SET @@lc_time_names = 111; --echo '#--------------------FN_DYNVARS_060_10-------------------------#' ############################################################################# diff --git a/mysql-test/t/locale.test b/mysql-test/t/locale.test index 04ac95cea06..93e347b722d 100644 --- a/mysql-test/t/locale.test +++ b/mysql-test/t/locale.test @@ -54,3 +54,60 @@ SELECT DATE_FORMAT('2001-01-05', '%w %a %W'); SELECT DATE_FORMAT('2001-01-06', '%w %a %W'); SELECT DATE_FORMAT('2001-01-07', '%w %a %W'); --echo End of 5.4 tests + + +--echo # +--echo # Start of 5.6 tests +--echo # + +--echo # +--echo # WL#5303 Romansh locale for DAYNAME, MONTHNAME, DATE_FORMAT +--echo # + +SET NAMES utf8; +SET @old_50915_lc_time_names := @@lc_time_names; +SET lc_time_names=en_US; +SELECT DATE_FORMAT('2001-01-01', '%w %a %W'); +SELECT DATE_FORMAT('2001-03-01', '%c %b %M'); +SET lc_time_names=rm_CH; +SELECT DATE_FORMAT('2001-01-01', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-02', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-03', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-04', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-05', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-06', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-07', '%w %a %W'); +SELECT DATE_FORMAT('2001-01-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-02-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-03-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-04-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-05-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-06-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-07-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-08-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-09-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-10-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-11-01', '%c %b %M'); +SELECT DATE_FORMAT('2001-12-01', '%c %b %M'); +SET lc_time_names=de_CH; +SELECT DATE_FORMAT('2001-01-06', '%w %a %W'); +SELECT DATE_FORMAT('2001-09-01', '%c %b %M'); + +# Checking AM/PM +SELECT DATE_FORMAT('2010-03-23 11:00:00','%h %p'); +SELECT DATE_FORMAT('2010-03-23 13:00:00','%h %p'); + +# Checking numeric format +SELECT format(123456789,2,'rm_CH'); + +# Checking that error messages point to en_US. +SET lc_messages=rm_CH; +--error ER_NO_SUCH_TABLE +SELECT * FROM non_existent; + +SET lc_time_names=@old_50915_lc_time_names; + + +--echo # +--echo # End of 5.6 tests +--echo # diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index 65109516681..e7e621081d6 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -549,11 +549,11 @@ set lc_time_names=NULL; set lc_time_names=-1; select @@lc_time_names; --echo LC_TIME_NAMES: testing locale with the last ID: -set lc_time_names=109; +set lc_time_names=110; select @@lc_time_names; --echo LC_TIME_NAMES: testing a number beyond the valid ID range: --error ER_UNKNOWN_LOCALE -set lc_time_names=110; +set lc_time_names=111; select @@lc_time_names; --echo LC_TIME_NAMES: testing that 0 is en_US: set lc_time_names=0; diff --git a/sql/sql_locale.cc b/sql/sql_locale.cc index b2b112ed4ba..c7d21ffd424 100644 --- a/sql/sql_locale.cc +++ b/sql/sql_locale.cc @@ -3247,6 +3247,75 @@ MY_LOCALE my_locale_el_GR ); /***** LOCALE END el_GR *****/ + +/***** LOCALE BEGIN rm_CH: Romansh - Switzerland *****/ +static const char *my_locale_month_names_rm_CH[13]= +{ + "schaner", "favrer", "mars", "avrigl", "matg", "zercladur", + "fanadur", "avust", "settember", "october", "november", "december", NullS +}; + +static const char *my_locale_ab_month_names_rm_CH[13]= +{ + "schan", "favr", "mars", "avr", "matg", "zercl", + "fan", "avust", "sett", "oct", "nov", "dec", NullS +}; + +static const char *my_locale_day_names_rm_CH[8]= +{ + "glindesdi", "mardi", "mesemna", "gievgia", + "venderdi", "sonda", "dumengia", NullS +}; + +static const char *my_locale_ab_day_names_rm_CH[8]= +{ + "gli", "ma", "me", "gie", "ve", "so", "du", NullS +}; + +static TYPELIB my_locale_typelib_month_names_rm_CH= +{ + array_elements(my_locale_month_names_rm_CH) - 1, + "", my_locale_month_names_rm_CH, NULL +}; + +static TYPELIB my_locale_typelib_ab_month_names_rm_CH= +{ + array_elements(my_locale_ab_month_names_rm_CH) - 1, + "", my_locale_ab_month_names_rm_CH, NULL +}; + +static TYPELIB my_locale_typelib_day_names_rm_CH= +{ + array_elements(my_locale_day_names_rm_CH) - 1, + "", my_locale_day_names_rm_CH, NULL +}; + +static TYPELIB my_locale_typelib_ab_day_names_rm_CH= +{ + array_elements(my_locale_ab_day_names_rm_CH) - 1, + "", my_locale_ab_day_names_rm_CH, NULL +}; + +MY_LOCALE my_locale_rm_CH +( + 110, + "rm_CH", + "Romansh - Switzerland", + FALSE, + &my_locale_typelib_month_names_rm_CH, + &my_locale_typelib_ab_month_names_rm_CH, + &my_locale_typelib_day_names_rm_CH, + &my_locale_typelib_ab_day_names_rm_CH, + 9, /* max mon name length */ + 9, /* max day name length */ + ',', /* decimal point rm_CH */ + '\'', /* thousands_sep rm_CH */ + "\x03\x03", /* grouping rm_CH */ + &global_errmsgs[en_US] +); +/***** LOCALE END rm_CH *****/ + + /* The list of all locales. Note, locales must be ordered according to their @@ -3365,6 +3434,7 @@ MY_LOCALE *my_locales[]= &my_locale_sv_FI, &my_locale_zh_HK, &my_locale_el_GR, + &my_locale_rm_CH, NULL }; |