mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#37575 UCASE fails on monthname
The MONTHNAME/DAYNAME functions returns binary string, so the LOWER/UPPER functions are not effective on the result of MONTHNAME/DAYNAME call. Character set of the MONTHNAME/DAYNAME function result has been changed to connection character set. include/m_ctype.h: added my_charset_repertoire function mysql-test/r/ctype_ucs.result: test result mysql-test/r/func_time.result: test result mysql-test/t/ctype_ucs.test: test case mysql-test/t/func_time.test: test case sql/item_timefunc.cc: Item_func_monthname::fix_length_and_dec and Item_func_dayname::fix_length_and_dec methods have been modified to use connection character set sql/item_timefunc.h: Item_func_monthname::fix_length_and_dec and Item_func_dayname::fix_length_and_dec methods have been modified to use connection character set sql/mysql_priv.h: added max_month_name_length, max_day_name_length fields into MY_LOCALE struct sql/mysqld.cc: The test_lc_time_sz function controls modifications of the locale database in debugging mode. sql/sql_locale.cc: initialization of max_month_name_length, max_day_name_length fields strings/ctype.c: added my_charset_repertoire function
This commit is contained in:
@ -1111,4 +1111,57 @@ set names latin1;
|
||||
select hex(char(0x41 using ucs2));
|
||||
hex(char(0x41 using ucs2))
|
||||
0041
|
||||
SET character_set_connection=ucs2;
|
||||
SELECT CHARSET(DAYNAME(19700101));
|
||||
CHARSET(DAYNAME(19700101))
|
||||
ucs2
|
||||
SELECT CHARSET(MONTHNAME(19700101));
|
||||
CHARSET(MONTHNAME(19700101))
|
||||
ucs2
|
||||
SELECT LOWER(DAYNAME(19700101));
|
||||
LOWER(DAYNAME(19700101))
|
||||
thursday
|
||||
SELECT LOWER(MONTHNAME(19700101));
|
||||
LOWER(MONTHNAME(19700101))
|
||||
january
|
||||
SELECT UPPER(DAYNAME(19700101));
|
||||
UPPER(DAYNAME(19700101))
|
||||
THURSDAY
|
||||
SELECT UPPER(MONTHNAME(19700101));
|
||||
UPPER(MONTHNAME(19700101))
|
||||
JANUARY
|
||||
SELECT HEX(MONTHNAME(19700101));
|
||||
HEX(MONTHNAME(19700101))
|
||||
004A0061006E0075006100720079
|
||||
SELECT HEX(DAYNAME(19700101));
|
||||
HEX(DAYNAME(19700101))
|
||||
00540068007500720073006400610079
|
||||
SET LC_TIME_NAMES=ru_RU;
|
||||
SET NAMES utf8;
|
||||
SET character_set_connection=ucs2;
|
||||
SELECT CHARSET(DAYNAME(19700101));
|
||||
CHARSET(DAYNAME(19700101))
|
||||
ucs2
|
||||
SELECT CHARSET(MONTHNAME(19700101));
|
||||
CHARSET(MONTHNAME(19700101))
|
||||
ucs2
|
||||
SELECT LOWER(DAYNAME(19700101));
|
||||
LOWER(DAYNAME(19700101))
|
||||
четверг
|
||||
SELECT LOWER(MONTHNAME(19700101));
|
||||
LOWER(MONTHNAME(19700101))
|
||||
января
|
||||
SELECT UPPER(DAYNAME(19700101));
|
||||
UPPER(DAYNAME(19700101))
|
||||
ЧЕТВЕРГ
|
||||
SELECT UPPER(MONTHNAME(19700101));
|
||||
UPPER(MONTHNAME(19700101))
|
||||
ЯНВАРЯ
|
||||
SELECT HEX(MONTHNAME(19700101));
|
||||
HEX(MONTHNAME(19700101))
|
||||
042F043D043204300440044F
|
||||
SELECT HEX(DAYNAME(19700101));
|
||||
HEX(DAYNAME(19700101))
|
||||
0427043504420432043504400433
|
||||
SET character_set_connection=latin1;
|
||||
End of 5.0 tests
|
||||
|
@ -592,6 +592,21 @@ unix_timestamp('1970-01-01 03:00:01')
|
||||
select unix_timestamp('2038-01-19 07:14:07');
|
||||
unix_timestamp('2038-01-19 07:14:07')
|
||||
0
|
||||
SELECT CHARSET(DAYNAME(19700101));
|
||||
CHARSET(DAYNAME(19700101))
|
||||
latin1
|
||||
SELECT CHARSET(MONTHNAME(19700101));
|
||||
CHARSET(MONTHNAME(19700101))
|
||||
latin1
|
||||
SELECT LOWER(DAYNAME(19700101));
|
||||
LOWER(DAYNAME(19700101))
|
||||
thursday
|
||||
SELECT LOWER(MONTHNAME(19700101));
|
||||
LOWER(MONTHNAME(19700101))
|
||||
january
|
||||
SELECT COERCIBILITY(MONTHNAME('1970-01-01')),COERCIBILITY(DAYNAME('1970-01-01'));
|
||||
COERCIBILITY(MONTHNAME('1970-01-01')) COERCIBILITY(DAYNAME('1970-01-01'))
|
||||
4 4
|
||||
CREATE TABLE t1 (datetime datetime, timestamp timestamp, date date, time time);
|
||||
INSERT INTO t1 values ("2001-01-02 03:04:05", "2002-01-02 03:04:05", "2003-01-02", "06:07:08");
|
||||
SELECT * from t1;
|
||||
|
@ -685,4 +685,29 @@ set names latin1;
|
||||
#
|
||||
select hex(char(0x41 using ucs2));
|
||||
|
||||
#
|
||||
# Bug#37575: UCASE fails on monthname
|
||||
#
|
||||
SET character_set_connection=ucs2;
|
||||
SELECT CHARSET(DAYNAME(19700101));
|
||||
SELECT CHARSET(MONTHNAME(19700101));
|
||||
SELECT LOWER(DAYNAME(19700101));
|
||||
SELECT LOWER(MONTHNAME(19700101));
|
||||
SELECT UPPER(DAYNAME(19700101));
|
||||
SELECT UPPER(MONTHNAME(19700101));
|
||||
SELECT HEX(MONTHNAME(19700101));
|
||||
SELECT HEX(DAYNAME(19700101));
|
||||
SET LC_TIME_NAMES=ru_RU;
|
||||
SET NAMES utf8;
|
||||
SET character_set_connection=ucs2;
|
||||
SELECT CHARSET(DAYNAME(19700101));
|
||||
SELECT CHARSET(MONTHNAME(19700101));
|
||||
SELECT LOWER(DAYNAME(19700101));
|
||||
SELECT LOWER(MONTHNAME(19700101));
|
||||
SELECT UPPER(DAYNAME(19700101));
|
||||
SELECT UPPER(MONTHNAME(19700101));
|
||||
SELECT HEX(MONTHNAME(19700101));
|
||||
SELECT HEX(DAYNAME(19700101));
|
||||
SET character_set_connection=latin1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -304,6 +304,15 @@ select unix_timestamp('1970-01-01 03:00:01');
|
||||
# check bad date, close to the boundary (we cut them off in the very end)
|
||||
select unix_timestamp('2038-01-19 07:14:07');
|
||||
|
||||
#
|
||||
# Bug #28759: DAYNAME() and MONTHNAME() return binary string
|
||||
#
|
||||
|
||||
SELECT CHARSET(DAYNAME(19700101));
|
||||
SELECT CHARSET(MONTHNAME(19700101));
|
||||
SELECT LOWER(DAYNAME(19700101));
|
||||
SELECT LOWER(MONTHNAME(19700101));
|
||||
SELECT COERCIBILITY(MONTHNAME('1970-01-01')),COERCIBILITY(DAYNAME('1970-01-01'));
|
||||
|
||||
#
|
||||
# Test types from + INTERVAL
|
||||
|
Reference in New Issue
Block a user